我正在尝试在我在VBA中保存的文件的C#程序中获取正确的日期。
这是我在VBA中的代码,它将单元格设置为日期,然后保存工作表。
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
所以上面的代码工作正常。它将当前日期放入单元格中:
文件信息如下所示:
正如你所看到的,两者都匹配得很好。
所以现在我使用一些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单元格中获取。但所有其他人都不匹配。它要么太高,要么完全偏离。
为了解决这个问题,我会做错误做什么,以便两个日期时间都正确?