簡體   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