大量数据导出到 Excel。多张纸
HUGE data export to Excel. Multiple sheets
我想将超过 2,000,000 行导出到 Excel(以后会越来越大)。一个 sheet 处理 1,048,576 行。我想在每个 sheet 上放 300,000(以便 Excel 可以正常工作)。
我尝试创建 OLE 对象以将数据放在不同的 sheet 上。它适用于少量数据,但花费的时间太长,并且会导致大量数据出错。
然后我尝试了导出到 Excel 的组件,它花费的时间更少,但在这种情况下我不知道如何在 sheet 上分发数据。
使用 SQL 在 sheets 上分发会导致内存填充错误。
你能推荐其他方法吗?
我们看不到您的代码,但我们只能想象您一次编写一个单元格。相反,您应该执行以下操作:
- 将所有数据放入变体数组。
- 创建一个 Excel
Range
对象,其中包含要填充的单元格范围。
- 将您的变体数组分配给那个
Range
对象。
这是使用 Excel 自动化执行块分配的有效方法。
此外,自动化 Excel 可能不是生成 Excel 文件的最有效方式。您最好直接生成文件而不调用 Excel 应用程序。对于非常大的文件,最有效的写入和读取格式是二进制 OpenXML 格式,扩展名为 .xlsb。要么找一个组件来生成这样的文件,要么自己写代码到 OpenXML 格式规范。
我想将超过 2,000,000 行导出到 Excel(以后会越来越大)。一个 sheet 处理 1,048,576 行。我想在每个 sheet 上放 300,000(以便 Excel 可以正常工作)。
我尝试创建 OLE 对象以将数据放在不同的 sheet 上。它适用于少量数据,但花费的时间太长,并且会导致大量数据出错。 然后我尝试了导出到 Excel 的组件,它花费的时间更少,但在这种情况下我不知道如何在 sheet 上分发数据。 使用 SQL 在 sheets 上分发会导致内存填充错误。
你能推荐其他方法吗?
我们看不到您的代码,但我们只能想象您一次编写一个单元格。相反,您应该执行以下操作:
- 将所有数据放入变体数组。
- 创建一个 Excel
Range
对象,其中包含要填充的单元格范围。 - 将您的变体数组分配给那个
Range
对象。
这是使用 Excel 自动化执行块分配的有效方法。
此外,自动化 Excel 可能不是生成 Excel 文件的最有效方式。您最好直接生成文件而不调用 Excel 应用程序。对于非常大的文件,最有效的写入和读取格式是二进制 OpenXML 格式,扩展名为 .xlsb。要么找一个组件来生成这样的文件,要么自己写代码到 OpenXML 格式规范。