VBA设置文件的date修改,并从C#

我正在试图在我正在保存在VBA中的文件的C#程序中获取正确的date。

这是我在VBA中的代码,将单元格设置为date,然后保存工作表。

Sheets("KeepTrackSecret").Range(tagNumRange).Value = Format(Now(), "MM/dd/yyyy hh:mm AM/PM") newFileName = objFolders("desktop") Randomize newFileName = newFileName & "\BOM_" & CLng(Rnd() * 999999999) & ".xlsx" Application.DisplayAlerts = False ActiveWorkbook.SaveAs newFileName, FileFormat:=51, CreateBackup:=False Call unlockSheets(False) ActiveWorkbook.Close SaveChanges:=False Application.DisplayAlerts = True 

所以上面的代码工作得很好。 它将当前date放入单元格中:

在这里输入图像说明

文件信息如下所示:

在这里输入图像说明

正如你所看到的,两者配合得很好。

所以现在我使用一些C#代码来读取excel文件中的单元格值:

 private bool checkExcelFile(string orgPath) { var path = string.Format("{0}\\{1}", pathString, importData); FileInfo fileInfo = new FileInfo(path); DateTime creationTime = fileInfo.CreationTime; DateTime lastWriteTime = fileInfo.LastWriteTime; DateTime lastAccessTime = fileInfo.LastAccessTime; DateTime creationTimeUtc = fileInfo.CreationTimeUtc; DateTime lastWriteTimeUtc = fileInfo.LastWriteTimeUtc; DateTime lastAccessTimeUtc = fileInfo.LastAccessTimeUtc; string strLastModified = System.IO.File.GetLastWriteTime(path).ToString("MM/dd/yyyy hh:mm tt"); string blah = System.IO.File.GetLastWriteTime(path).ToString("MM/dd/yyyy hh:mm tt"); DateTime result = Convert.ToDateTime(excel.checkingFile(path)); } public string checkingFile(string path) { FileInfo newFile = new FileInfo(path); ExcelPackage pck = new ExcelPackage(newFile); var ws = pck.Workbook.Worksheets["KeepTrackSecret"]; string hiddenDate = ws.Cells["A1"].Text; ; return hiddenDate; } 

我得到的价值如下:

  creationTime: 10/10/2017 10:40:35 AM lastWriteTime: 10/10/2017 10:40:35 AM lastAccessTime: 10/10/2017 10:40:35 AM creationTimeUtc: 10/10/2017 2:40:35 PM lastWriteTimeUtc: 10/10/2017 2:40:35 PM lastAccessTimeUtc: 10/10/2017 2:40:35 PM strLastModified: 10/10/2017 10:40 AM blah: 10/10/2017 10:40 AM result: 10/10/2017 10:38:00 AM 

正如您所看到的,我在查看文件时想到了许多不同的时间。 结果是从Excel单元格中获得正确的date时间。 但所有其他人不匹配。 它要么太高,要么完全离开。

为了解决这个问题,我会做些什么错误的事情,以确保两个date是正确的?