如何导出大型数据集(大约 40k 行和 26 列),以写入 Excel 表

Posted

技术标签:

【中文标题】如何导出大型数据集(大约 40k 行和 26 列),以写入 Excel 表【英文标题】:How to export Large dataset (around 40k rows and 26columns), to be written in excel sheet 【发布时间】:2013-02-06 10:46:28 【问题描述】:

我们有一个非常大的数据集(大约 40k 行)。我想写入excel文件。

我已经尝试过逐个单元格地写入excel文件,它可以工作。

我面临的问题是,写excel需要很多时间。

有没有有效的方法来做同样的事情。

【问题讨论】:

您使用哪个库来导出? 如果 winforms 可以在另一个线程上运行任务。 有许多更有效的方法来做到这一点,但它们取决于知道您需要什么输出以及您已经拥有什么代码。例如,如果您只想要 excel 中的数据,那么 CSV 可能是合适的,或者如果您有公式,那么您可以直接编写 OOXML。您可以将其写入数据库并使用 excel 查询来代替。 如果您不关心格式,我会选择编写 CSV 文件,或者使用 OleDb 编写电子表格。这两个选项都比 Interop 快得多,并且您不需要第三方库。如果您不确定如何使用 OleDb,我有一些示例代码,您可以根据自己的目的进行调整。 【参考方案1】:

不要循环遍历每一行/列,而是将完整的数据集分配给内存中的一个数组 - 然后将该数组分配给一个相同维度的 Range 对象。在 VBA 中,这看起来像:

Dim arr as Variant
arr = ... ' Your code to fill the array here
Set Workbook("YourWorkbook").Worksheets("Worksheetname"). _ 
    Range(1,1).Resize(40000, 20).Value = arr

希望你能把它翻译成 c#...

【讨论】:

【参考方案2】:

如果您直接写入 excel,Albert 的想法会奏效 - 但它仍然会很慢。 我会使用像 EPPLUS 这样的库将大量数据写入 excel - 它更快、更可靠。

【讨论】:

以上是关于如何导出大型数据集(大约 40k 行和 26 列),以写入 Excel 表的主要内容,如果未能解决你的问题,请参考以下文章

查找大型数据集中的两个日期之间是不是有假期?

如何以自动化方式导出大型 Neo4j 数据集进行分析

Ruby-on-Rails 3.2:导出包含大型数据集(100,000 条记录)的 CSV

通过 SQL 或 R 对大型数据集进行有效分析? [关闭]

使用大型列表优化 Django 查询集调用?

根据分类列拆分训练和测试集