【问题标题】:Exporting large(>500000 rows) Datasets into xlsx将大型(> 500000 行)数据集导出到 xlsx
【发布时间】:2017-03-10 11:18:27
【问题描述】:

我在将数据集导出到 xlsx 时遇到问题。我的代码:

DataSet freeTable = new DataSet();
freeTable = FoxDal.Instance.freeTable;
XLWorkbook wb = new XLWorkbook();
wb.Worksheets.Add(freeTable.Tables[0], "sheet1");
wb.SaveAs(@"E:\test5.xlsx");

在运行代码时 VS 给我提示(问我 XLReentrantEnumerableSet.cs 在哪里),如果我不选择它 VS 抛出异常 System.OutOfMemoryException。我正在使用 ClosedXML。这个框架有一些附加的库吗?使用小表格,我的代码可以正常工作。

【问题讨论】:

  • Excel 只能处理大约 100 万行...
  • 对不起,我的意思是 500000。
  • 如果你有fox pro标签表示源是foxpro表,那么将数据传输到Excel最快的方法是使用Excel的QueryTables.Add。第二种选择是使用 Excel 的 CopyFormRecordset 传输数据。 EPPLus 会慢一些,但可以工作。

标签: c# dataset xlsx foxpro closedxml


【解决方案1】:

我将框架更改为 EPPlus,现在我可以转换大文件了。 我的新代码:

        DataSet freeTable = new DataSet();
        freeTable = FoxDal.Instance.freeTable;
        FileInfo fileInfo = new FileInfo(@"E:\Test.xlsx");
        using (ExcelPackage pck = new ExcelPackage())
        {
            ExcelWorksheet ws = pck.Workbook.Worksheets.Add("table");
            ws.Cells["A1"].LoadFromDataTable(freeTable.Tables[0], true);
            pck.SaveAs(fileInfo);
        }

【讨论】:

    猜你喜欢
    • 2023-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2015-12-17
    • 2012-07-07
    • 1970-01-01
    相关资源
    最近更新 更多