Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 将大量数据导出到Excel。多页_Delphi_Google Sheets_Export To Excel_Large Data - Fatal编程技术网

Delphi 将大量数据导出到Excel。多页

Delphi 将大量数据导出到Excel。多页,delphi,google-sheets,export-to-excel,large-data,Delphi,Google Sheets,Export To Excel,Large Data,我想将超过2000000行导出到Excel(将来会越来越大)。一张纸可处理1048576行。我想在每张纸上写上300000(这样Excel就可以正常工作了) 我尝试创建OLE对象以将数据放在不同的工作表上。它适用于少量数据,但耗时太长,导致大量数据出错。 然后我尝试了导出到Excel的组件,它花费的时间更少,但在这种情况下我不知道如何在工作表上分发数据。 使用SQL在工作表上分发会导致内存填充错误 你能推荐其他方法吗?我们看不到你的代码,但我们只能想象你一次只写一个单元格。相反,您应该执行以下操

我想将超过2000000行导出到Excel(将来会越来越大)。一张纸可处理1048576行。我想在每张纸上写上300000(这样Excel就可以正常工作了)

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


你能推荐其他方法吗?

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

  • 将所有数据放入变量数组中
  • 创建一个Excel
    Range
    对象,其中包含要填充的单元格范围
  • 将变量数组分配给该
    范围
    对象
  • 这是使用Excel automation执行块分配的有效方法


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

    您尝试了哪个导出组件?您是否询问组件供应商如何在图纸上分发数据?Delphi有一个原生excel组件,它可以直接将数据写入excel文件。不,我没有。我想我会试试数组。谢谢您的回复,David,非常有用的建议。我发现,要创建非常大的Excel文件,将数据保存到逗号分隔的csv文件中,然后将该文件加载到Excel中,要比直接将文件加载到变量数组快几倍。@lkessler变量数组肯定很慢。但我不建议这样做。