繁体   English   中英

将excel保存到csv / txt时保留几秒钟

[英]preserve seconds when saving excel to csv/txt

当我将导出的Excel文件另存为CSV或文本文件时,秒数在DateTime数据中会丢失。 例如,如果在Excel中显示7/10/2019 2:01:39 PM ,并且将其另存为CSV,则当打开CSV时,我看到的是7/10/2019 2:01:00 PM

我正在使用Office.Interop.Excel将打开的Excel文件保存为CSV。 然后打开CSV文件。

如果我将Excel文件另存为txt,然后打开txt文件,此行为是相同的。

将Excel文件另存为csv或txt时,如何保留秒数?

这是我到目前为止的内容:

excel = System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application") as Excel.Application;

//for csv save
excel.ActiveWorkbook.SaveAs(toFile, Excel.XlFileFormat.xlCSVWindows); 

//for txt save
excel.ActiveWorkbook.SaveAs(toFile, FileFormat: Excel.XlFileFormat.xlUnicodeText,
    AccessMode: Excel.XlSaveAsAccessMode.xlNoChange,
    ConflictResolution: Excel.XlSaveConflictResolution.xlLocalSessionChanges);

通过执行以下概述的步骤,我能够重现该问题。 我提出的解决方案位于答案的结尾,但是我添加了我为完整起见而复制问题的步骤。 我使用的示例如下:

7/10/2019下午2:01:39

2019/7/10下午1:12:11

7/10/2019下午12:44:58

  1. 创建新的Excel文档并添加三个示例日期,如下所示。 这是通过粘贴上面注释中提供的示例使用的默认日期格式。

示例Excel数据

  1. 运行以下代码以另存为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);
  1. 输出显示OP获得的结果

输出结果


我发现的解决方案是在导出之前更新单元格的格式。 例如,如果所有日期都在第一行中,则以下内容将更改格式以根据需要显示日期。

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);

在另存为csv之前,我必须格式化列。 我只需要添加这个

worksheet.Columns["B"].NumberFormat = "mm/dd/yyyy hh:mm:ss";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM