Мы экспортируем список информации о дилере в CSV, чтобы клиент мог работать с ним в Excel и импортировать его обратно в приложение.
Когда мы редактируем сам файл CSV, он отлично работает, но когдаExcel открывает и сохраняет файл, он теряет всю структуру CSV.
Кавычки удаляются, а также удаляются точки с запятой.
Наш код экспорта теперь выглядит следующим образом:
Response.Clear();
Response.ClearHeaders();
Response.ClearContent();
Response.AddHeader("content-disposition", string.Format("attachment;filename=export_dealers_{0}_{1:yyyy-MM-dd-HH-mm}.csv; charset=utf-8", countryCode, DateTime.Now));
Response.ContentType = "text/csv";
Response.AddHeader("Pragma", "public");
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.BinaryWrite(Encoding.UTF8.GetPreamble());
Response.Write(ToCsv(list));
Response.Flush();
Response.End();
Функция toCSV
просто возвращает строку со всеми полями, каждое из которых находится в кавычках, разделенных точкой с запятой.
Раньше у нас было по-другому, но нам пришлось добавить дополнительные данные кодирования, чтобы не искажатьспециальные символы, такие как ç
или ñ
...
Приведенный выше фрагмент кода экспортирует CSV-файл, который кажется правильным, но когда Excel открывает его и сохраняет (даже без изменения поля)) все точки с запятой и кавычки удаляются, и если вы попробуете функцию Save as
, она обнаружит, чтобы сохранить ее как файл .txt
вместо CSV.