如何导出大型数据集(大约 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 表的主要内容,如果未能解决你的问题,请参考以下文章