【问题标题】:HUGE data export to Excel. Multiple sheets [closed]大量数据导出到 Excel。多张纸[关闭]
【发布时间】:2016-07-15 10:54:40
【问题描述】:

我想将超过 2,000,000 行导出到 Excel(将来会变得更大)。一张纸处理 1,048,576 行。我想在每张纸上放 300,000(这样 Excel 才能正常工作)。

我尝试创建 OLE 对象以将数据放在不同的工作表上。它适用于少量数据,但花费的时间太长,并且会导致大量数据出错。 然后我尝试了导出到 Excel 的组件,它花费的时间更少,但在这种情况下我不知道如何在工作表上分配数据。 使用 SQL 在工作表上分配会导致内存填充错误。

你能推荐其他方法吗?

【问题讨论】:

  • 您尝试了哪个导出组件?您是否询问过组件供应商如何在工作表上分发数据? Delphi自带excel组件,可以直接将数据写入Excel文件。
  • 不,我没有。我想我会尝试数组。谢谢回复

标签: delphi google-sheets export-to-excel large-data


【解决方案1】:

我们看不到您的代码,但我们只能想象您一次编写一个单元格。相反,您应该执行以下操作:

  1. 将所有数据放入变量数组中。
  2. 创建一个 Excel Range 对象,其中包含要填充的单元格范围。
  3. 将您的变体数组分配给该Range 对象。

这是使用 Excel 自动化执行块分配的有效方法。

此外,自动化 Excel 可能不是生成 Excel 文件的最有效方法。您最好直接生成文件而不调用 Excel 应用程序。对于非常大的文件,最有效的写入和读取格式是二进制 OpenXML 格式,扩展名为 .xlsb。要么找到生成此类文件的组件,要么将您自己的代码写入 OpenXML 格式规范。

【讨论】:

  • 谢谢大卫,有用的建议。
  • 我发现要创建非常大的 Excel 文件,将数据保存到逗号分隔的 csv 文件中,然后将该文件加载到 Excel 中比直接将文件加载到变量数组中快几倍。
  • @lkessler 变体数组肯定会很慢。但我根本不建议这样做。
猜你喜欢
  • 2022-06-11
  • 1970-01-01
  • 1970-01-01
  • 2015-12-26
  • 1970-01-01
  • 2013-10-06
  • 2016-09-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多