Автоматическое форматирование даты при экспорте из DataGrid в Excel в C #

В настоящее время я форматирую дату для определенного файла Excel Экспорт из DataSet / DataGrid.
Дата форматируется так:

DateTime date = Convert.ToDateTime(entry.Date); string formatdate = String.Format("{0:yyyy/MM/dd}", date); 

После создания и создания DataSet я использую следующий код для экспорта DataSet в файл Excel:

 public static void ExportDStoExcel(DataSet ds, string filename) { HttpResponse response = HttpContext.Current.Response; response.Clear(); response.Charset = ""; response.ContentType = "application/vnd.ms-excel"; response.AddHeader("Content-Disposition", "attachment;filename=\"" + filename + "\""); using (StringWriter sw = new StringWriter()) { using (HtmlTextWriter htw = new HtmlTextWriter(sw)) { DataGrid dg = new DataGrid(); dg.DataSource = ds.Tables[0]; dg.DataBind(); dg.RenderControl(htw); response.Write(sw.ToString()); response.End(); } } } 

Моя единственная проблема – однажды я экспортирую это в Excel, Excel Auto-Formats the Dates, например: MM / DD / YYYY вместо YYYY / MM / DD.

Я понимаю, что этого можно добиться вручную, открыв в Excel, но Export встраивается в автоматизированную систему и требует жесткой кодировки.

Есть ли способ обойти автоматическое форматирование даты DateTime?

Прямо сейчас вы просто выводите таблицу HTML, что Excel интерпретирует, как ей нравится. Вы могли бы перейти на уровень Excel, чтобы иметь возможность указывать свойства столбца (задавать тип Text вместо General). Это означает, что вам нужно создать фактический файл xls (для этого существуют разные библиотеки). Или (если ограничение на Office 2010 является приемлемым), полученное в формате Open XML , которое вы можете писать с помощью обычного API .NET.

У меня была такая же проблема и она была решена, добавив перед текстом незаменимое пространство (& nbsp). Остановил Excel от автоматического форматирования. Не самое чистое решение, но сделал трюк для меня …

Вы можете создавать ячейки excel с mso-number-format

mso-number-format:"\\@"

\@ скажет excel обрабатывать все данные только в текстовом формате. Таким образом, автоматический формат не произойдет.

Обновите свой код следующим образом:

 response.ContentType = "application/vnd.ms-excel"; response.AddHeader("Content-Disposition", "attachment;filename=\"" + filename + "\""); response.Write("<html xmlns:x=\"urn:schemas-microsoft-com:office:excel\">"); response.Write("<head><style> td {mso-number-format:\\@;} </style></head><body>"); using (StringWriter sw = new StringWriter()) { using (HtmlTextWriter htw = new HtmlTextWriter(sw)) { DataGrid dg = new DataGrid(); dg.DataSource = ds.Tables[0]; dg.DataBind(); dg.RenderControl(htw); response.Write(sw.ToString()); response.Write("</body></html>"); response.End(); } } 

ИЛИ

вы также можете попробовать с определенным форматом даты. См. http://cosicimiento.blogspot.in/2008/11/styling-excel-cells-with-mso-number.html.

mso-number-format:"yyyy\/mm\/dd"

  • Чтение данных вместо datestr из файла excel
  • Средний столбец по конкретным связанным значениям времени и времени
  • Формула вычитания даты не возвращает правильный ответ
  • Excel - подсчетные ячейки
  • После двойного щелчка по excel только формат применяется к excel в npoi в C #
  • Удаление элемента времени в формате Long Date
  • Как преобразовать заданное число в формат времени HH: MM: SS в VBA?
  • Условно форматировать одну ячейку на основе значений в столбце
  • Excel VBA Сохранение определенного значения времени в ячейке из пользовательской формы
  • Как увеличить время на 2 часа 30 минут
  • Excel VBS Date Issue (проблема с DATE после преобразования XLSX в TXT)
  • Interesting Posts

    В столбце найдите все ячейки с одним и тем же текстом внутри. Затем суммируем все значения в тех же строках, но в разных столбцах

    Преобразование класса 'pandas.tslib.Timedelta' в строку при экспорте в excel

    Excel 2016 VBA Преобразование Windows в MAC

    Оценка формулы, не работающей в VBA

    Как обойти уведомления о перспективах при попытке получить информацию о пользователях?

    Проблема при чтении файла excel в C # с ADO.Net

    Добавление комментариев в базу данных Vlookup

    Точное обновление для реального времени для прогнозирования распространения на основе текущей статистики

    VBA Используйте диапазон с переменной и остановите его при условии

    Java: отличное решение для преобразования даты csv с Apache Poi

    Формула Excel – вычисление среднего времени для всех последних времен за каждый день

    Отправьте электронное письмо из Excel 2007 VBA с помощью шаблона Outlook и установите переменные

    Если строка содержит слово из списка, возвращаемое значение смежно со значением списка

    Excel VBA: копирование строки, если ячейки содержат определенные данные

    Как вставить массив Numpy в Excel

    Давайте будем гением компьютера.