Delphi,导出到Excel的问题的日期降低了01.01.1900 OleException(800A03EC)

塞尔久

该应用程序已导出到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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将日期“1900-01-01”从 angular 传递到 wcf

来自分类Dev

为什么在日期列中插入空字符串会产生1900-01-01

来自分类Dev

当数据表中的日期时间为 01/01/1900 时,在 ListView 中显示空字段

来自分类Dev

在运行SELECT语句时,Date列中的空白值返回为1900/01/01

来自分类Dev

cx_Oracle 1900-01-01 00:00:00.000000不返回毫秒

来自分类Dev

SSRS如果是“ 1900-01-01”,如何使用表达式显示“当前”?

来自分类Dev

为什么我在 Pandas 的时间列中得到“1900-01-01”

来自分类Dev

如何从1900-01-01T14:30:00.000Z格式获取时间差-MySQL?

来自分类Dev

Python-如何以08:09:00而不是1900-01-01 08:09:00的格式产生时间

来自分类Dev

js 无法将时区偏移量添加到“1900-01-01T00:00:00”?

来自分类Dev

如何在MySQL中存储“ 1/01/1900 3:54:32 am”?

来自分类Dev

如何将字符串“ 1900-01-01 08:00:00.000”格式化为HH:MM并添加30分钟?

来自分类Dev

如果日期时间== 01:01:01

来自分类Dev

JavaScript日期01/01/0001

来自分类Dev

Range.Autofilter 给出错误 800A03EC

来自分类Dev

如何在 C# 中将此日期“03/01/2018 12:00 AM”转换为“2018-03-01”?

来自分类Dev

背包01

来自分类Dev

错误:对象必填;'objDIR'代码:800A01A8

来自分类Dev

错误800A01A8需要对象

来自分类Dev

所需对象:'FSO.GetFolder(...).Size' 800A01A8

来自分类Dev

为什么MongoDB shell新的ISODate(0001-01-01)返回日期1901-01-01

来自分类Dev

如何使用 Java 生成 01/01/2016 到 01/01/2017 之间的任何随机日期?

来自分类Dev

如何将日期时间列标题(例如 2007-03-01 00:00:00)转换为日期-月-年格式,即 2007-03-01

来自分类Dev

Python:为什么不接受月份的01或02或03输入?

来自分类Dev

数字循环获取行号(01,02,03)

来自分类Dev

1900年之前的Android日期选择器

来自分类Dev

如果日期包含“ 1900”,则返回空字符串

来自分类Dev

1900年之前的Android日期选择器

来自分类Dev

日期时间设置 1\1\1900 而不是 Null 或 Blank

Related 相关文章

  1. 1

    将日期“1900-01-01”从 angular 传递到 wcf

  2. 2

    为什么在日期列中插入空字符串会产生1900-01-01

  3. 3

    当数据表中的日期时间为 01/01/1900 时,在 ListView 中显示空字段

  4. 4

    在运行SELECT语句时,Date列中的空白值返回为1900/01/01

  5. 5

    cx_Oracle 1900-01-01 00:00:00.000000不返回毫秒

  6. 6

    SSRS如果是“ 1900-01-01”,如何使用表达式显示“当前”?

  7. 7

    为什么我在 Pandas 的时间列中得到“1900-01-01”

  8. 8

    如何从1900-01-01T14:30:00.000Z格式获取时间差-MySQL?

  9. 9

    Python-如何以08:09:00而不是1900-01-01 08:09:00的格式产生时间

  10. 10

    js 无法将时区偏移量添加到“1900-01-01T00:00:00”?

  11. 11

    如何在MySQL中存储“ 1/01/1900 3:54:32 am”?

  12. 12

    如何将字符串“ 1900-01-01 08:00:00.000”格式化为HH:MM并添加30分钟?

  13. 13

    如果日期时间== 01:01:01

  14. 14

    JavaScript日期01/01/0001

  15. 15

    Range.Autofilter 给出错误 800A03EC

  16. 16

    如何在 C# 中将此日期“03/01/2018 12:00 AM”转换为“2018-03-01”?

  17. 17

    背包01

  18. 18

    错误:对象必填;'objDIR'代码:800A01A8

  19. 19

    错误800A01A8需要对象

  20. 20

    所需对象:'FSO.GetFolder(...).Size' 800A01A8

  21. 21

    为什么MongoDB shell新的ISODate(0001-01-01)返回日期1901-01-01

  22. 22

    如何使用 Java 生成 01/01/2016 到 01/01/2017 之间的任何随机日期?

  23. 23

    如何将日期时间列标题(例如 2007-03-01 00:00:00)转换为日期-月-年格式,即 2007-03-01

  24. 24

    Python:为什么不接受月份的01或02或03输入?

  25. 25

    数字循环获取行号(01,02,03)

  26. 26

    1900年之前的Android日期选择器

  27. 27

    如果日期包含“ 1900”,则返回空字符串

  28. 28

    1900年之前的Android日期选择器

  29. 29

    日期时间设置 1\1\1900 而不是 Null 或 Blank

热门标签

归档