Мне нужно реализовать загрузчик CSV-файлов для нашего сайта. Локально работает хорошо, но если я загружаю CSV через сайт, кодировка становится
[HttpGet("DownloadOrder/{orderID}/{forReorder}")]
public FileStreamResult DownloadQuote(int orderID, bool forReorder)
{
var q = provider.GetDataById(Id, false);
List<Data> datas = new List<Quote>();
quotes.Add(q);
//Deserialize model here
var memoryStream = WriteCsvToMemory(quotes);
Response.Headers.Add("Content-Disposition", "attachment;orderdata.csv");
Response.ContentType = "text/csv";
return new FileStreamResult(memoryStream, "text/csv") { FileDownloadName = "orderdata.csv" };
}
public MemoryStream WriteCsvToMemory(List<Data> data)
{
var enumerableData = new[] { data };
var memoryStream = new MemoryStream();
//Windows-1252
using (var streamWriter = new StreamWriter(memoryStream, Encoding.GetEncoding(1252)))
using (var csvWriter = new CsvWriter(streamWriter))
{
if (enumerableData != null)
{
foreach (var item in enumerableData)
{
csvWriter.WriteRecords(item);
}
csvWriter.NextRecord();
}
streamWriter.Flush();
return memoryStream;
}
}
Если я сохраняю файл locall после WriteCsvToMemory()
, кодировка хороша в Excel (буквы: é, á, ű) , но после загрузки открыть его выглядит, например: �. Есть ли какое-либо решение, чтобы исправить эту проблему кодирования? Или я должен использовать внешний пакет Excel для экспорта в xls?
Спасибо.