我有一个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;
存储在单元格E2:E2中的电子表格中的值是10/01/1900(dd / mm / yyyy)。但是,返回的值是09/01/1900,即前一天。为什么会发生这种情况,因为它似乎在1900年以后的其他年份的所有日期都正常工作?
答案 0 :(得分:5)
Pete,这个问题是excel的一个老bug,因为excel错误地认为1900年是闰年。因此,01-01-1900
和29-02-1900
之间的所有日期都会受到此错误的影响。
查看这些链接以获取更多信息