该应用程序已导出到Excel。当数据的日期低于30.12.1899时,它将引发错误OleException(800A03EC)。我知道Excel将日期存储为数字,数字1等于日期01.01.1900。但是,在Excel应用程序中,我可以将单元格格式设置为日期,并将日期放在01.01.1900以下。例如,日期01.01.1798不会导致错误或警告。对于导出,我们使用范围,例如:
var
xlApp, xlWorkBook, xlWorkSheet, Range, Data: Variant;
begin
xlApp := CreateOLEObject('Excel.Application');
try
xlApp.Visible := False;
xlApp.SheetsInNewWorkbook := 1;
xlApp.Application.WorkBooks.Add;
xlWorkSheet := xlApp.ActiveSheet;
Range := xlWorkSheet.Range[xlWorkSheet.Cells[4, 1], xlWorkSheet.Cells[4, 1]];
Range.NumberFormat := 'dd.mm.yyyy';
Range.Value := StrToDate('01.01.1753');
xlApp.Visible := True;
xlApp.Quit;
except
xlApp.Visible := True;
end;
有没有办法避免这个错误,并在单元格中将日期放在01.01.1900以下?
Excel不支持1900年1月1日之前的日期值。如果在Excel本身中将单元格格式设置为dd.mm.yyyy,然后输入01.01.1753,则该单元格将存储为文本(您可以通过将其传递给DATEVALUE
函数或尝试向其添加1来进行验证)。您还可以使用VBA宏复制您的Delphi错误-声明Date
变量,将其分配给DateSerial(1753, 1, 1)
,然后尝试为其分配单元格。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句