Delphi,导出到 Excel 日期较低的问题 01.01.1900 OleException(800A03EC)
Delphi, problem with export to Excel dates lower 01.01.1900 OleException(800A03EC)
应用程序已导出到 Excel。当数据的日期低于 1899 年 12 月 30 日时,它会引发错误 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 不支持早于 01/01/1900 的日期值。如果在 Excel 本身中将单元格格式化为 dd.mm.yyyy 然后输入 01.01.1753,它将存储为文本(您可以通过将其传递给 DATEVALUE
函数来验证这一点,或者尝试加1)。您还可以使用 VBA 宏复制 Delphi 错误 - 声明一个 Date
变量,将其分配给 DateSerial(1753, 1, 1)
,尝试为其分配一个单元格。
应用程序已导出到 Excel。当数据的日期低于 1899 年 12 月 30 日时,它会引发错误 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 不支持早于 01/01/1900 的日期值。如果在 Excel 本身中将单元格格式化为 dd.mm.yyyy 然后输入 01.01.1753,它将存储为文本(您可以通过将其传递给 DATEVALUE
函数来验证这一点,或者尝试加1)。您还可以使用 VBA 宏复制 Delphi 错误 - 声明一个 Date
变量,将其分配给 DateSerial(1753, 1, 1)
,尝试为其分配一个单元格。