我有一个Delphi应用程序,它使用类似于以下代码从excel电子表格中读取数据:
procedure TForm1.Button1Click(Sender: TObject);
var
xlApp, xlWorkBook, xlWorkSheet, arr: Variant;
begin
xlApp := CreateOLEObject('Excel.Application');
xlApp.Visible := False;
xlWorkBook := xlApp.Workbooks.Open('C:\Temp\Book1.xlsx');
xlWorkSheet := xlApp.WorkSheets[1];
arr := xlWorksheet.Range['E2:E2'].Value;
xlApp.Quit;
end;
Run Code Online (Sandbox Code Playgroud)
存储在单元格E2:E2中的电子表格中的值是10/01/1900(dd/mm/yyyy).但是,返回的值是09/01/1900,即前一天.为什么会发生这种情况,因为它似乎在1900年以后的其他年份的所有日期都正常工作?
Pete,这个问题是excel的一个老bug,因为excel错误地认为1900年是闰年.因此,所有的日期01-01-1900和29-02-1900被此问题的影响.
查看这些链接以获取更多信息