Мне удалось воспроизвести проблему, выполнив действия, описанные ниже. Мое предлагаемое решение находится в конце ответа, но я добавляю шаги, которые я использовал, чтобы воспроизвести проблему для полноты. Вот примеры, которые я использовал:
7/10/2019 14:01:39
7/10/2019 13:12:11
7/10/2019 12:44:58
- Создайте новый документ Excel и добавьте три даты в качестве примера, как показано ниже. При этом используется формат даты по умолчанию для вставки примеров, приведенных в комментариях выше.
- Запустите следующий код для сохранения в виде CSV и текстового файла
_Application excel = (_Application)Marshal.GetActiveObject("Excel.Application");
excel.ActiveWorkbook.SaveAs("test.csv", XlFileFormat.xlCSVWindows);
excel.ActiveWorkbook.SaveAs("test.txt", XlFileFormat.xlUnicodeText, XlSaveAsAccessMode.xlNoChange, XlSaveConflictResolution.xlLocalSessionChanges);
- Вывод, показывающий результат, который получает ОП
Я нашел решение обновить форматирование ячеек перед экспортом. Например, если все даты находятся в первой строке, следующее изменит форматирование для отображения нужной даты.
Range range = excel.Cells[1,1];
range.EntireColumn.NumberFormat = "MM/DD/YYYY hh:mm:ss";
Полное решение. Обратите внимание, что вызов SaveAs
сохранит в папке по умолчанию, которая для меня была папкой с моими документами, а не каталогом-исполнителем.
_Application excel = (_Application)Marshal.GetActiveObject("Excel.Application");
Range range = excel.Cells[1,1];
range.EntireColumn.NumberFormat = "MM/DD/YYYY hh:mm:ss";
excel.ActiveWorkbook.SaveAs("test.csv", XlFileFormat.xlCSVWindows);
excel.ActiveWorkbook.SaveAs("test.txt", XlFileFormat.xlUnicodeText, XlSaveAsAccessMode.xlNoChange, XlSaveConflictResolution.xlLocalSessionChanges);