Ole Excel Delphi日期问题

时间:2010-08-27 11:01:25

标签: delphi excel com

我有一个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年以后的其他年份的所有日期都正常工作?

1 个答案:

答案 0 :(得分:5)

Pete,这个问题是excel的一个老bug,因为excel错误地认为1900年是闰年。因此,01-01-190029-02-1900之间的所有日期都会受到此错误的影响。

查看这些链接以获取更多信息