Ole Excel Delphidate问题
我有一个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(年/月/年)。 但是,返还的价格是09/01/1900,即前一天。 为什么在1900年以后的其他年份的所有date都能正常工作呢?
Pete,这个问题是excel的一个老bug,因为excel错误地认为1900年是一个闰年。 所以01-01-1900
和29-02-1900
之间的所有date都受到这个错误的影响。
检查这些链接了解更多信息
- date和时间在Excel中
- Excel 2000错误地假定1900年是一个闰年
- http://www.inc.com/magazine/20080701/how-hard-could-it-be-glory-days.html