Мой файл razor.cs выглядит так:
private async Task ExportToCSV()
{
var myExport = new CsvExport(includeColumnSeparatorDefinitionPreamble: false, includeHeaderRow: false);
myExport.AddRow();
myExport["Directions"] = "Directions";
myExport["Leg"] = "Leg";
myExport["LegTime"] = "Leg Time";
myExport["Trip"] = "Trip";
myExport["TripTime"] = "Trip Time";
foreach (var direction in LoadedDrivingDirections)
{
var row = new object[5]
{
$"{direction.Maneuver} on {direction.Road}",
direction.LegDistance.ToString("0.00"),
TimeSpan.FromMinutes(direction.Time).ToString(@"hh\:mm"),
direction.DistanceAtStart.ToString("0.00"),
TimeSpan.FromMinutes(drivingDirectionViews.Where(w => w.Direction.Latitude == direction.Latitude).Select(s => s.TotalTime).FirstOrDefault()).ToString(@"hh\:mm")
};
myExport.AddRow();
myExport["Directions"] = row[0];
myExport["Leg"] = row[1];
myExport["LegTime"] = row[2];
myExport["Trip"] = row[3];
myExport["TripTime"] = row[4];
}
await _js.SaveAs("ProMilesTrip.csv", myExport.ExportAsMemoryStream().ToArray());
}
И моя функция js выглядит следующим образом:
function saveAsFile(filename, bytesBase64) {
if (navigator.msSaveBlob) {
//Download document in Edge browser
var data = window.atob(bytesBase64);
var bytes = new Uint8Array(data.length);
for (var i = 0; i < data.length; i++) {
bytes = data.charCodeAt(i);
}
var blob = new Blob([bytes.buffer], { type: "application/octet-stream" });
navigator.msSaveBlob(blob, filename);
}
else {
var link = document.createElement('a');
link.download = filename;
link.href = "data:application/octet-stream;base64," + bytesBase64;
document.body.appendChild(link); // Needed for Firefox
link.click();
document.body.removeChild(link);
}
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... mn-of-file
Мобильная версия