【问题标题】:Copy DataTable into Excel Very Quickly With NoColumnHeader using SpreadSheetGear使用 SpreadSheetGear 使用 NoColumnHeader 非常快速地将 DataTable 复制到 Excel 中
【发布时间】:2014-11-12 07:20:27
【问题描述】:

我有一个包含 30,000 行和大约 50 列的表,我必须将所有这些数据复制到没有列标题的 Excel 工作表 (.xlsm) 中,但我目前的方法需要很长时间。这是我的代码,谁能告诉我如何改进它以快速将数据填充到 excel 中或任何其他方法

    string Sqlcmd;
    Sqlcmd = "select Number ,Name1, Name 2 from MyTempData";
    SqlCommand command = new SqlCommand(Sqlcmd, con);
    SqlDataAdapter a = new SqlDataAdapter(command);
    DataTable datatable = new DataTable();
    a.Fill(datatable);
    con.Close();
    string filename = "E:\\shared\\TotalInformation.xlsm";
    SpreadsheetGear.IWorkbook Myworkbook = SpreadsheetGear.Factory.GetWorkbook(filename);
    SpreadsheetGear.IWorksheet partnerdataSheet = Myworkbook.Worksheets["Total Information"];
    SpreadsheetGear.IRange partnerNumberCheckRange = Myworkbook.Names["rngCopyRow"].RefersToRange;
     partnerNumberCheckRange.CopyFromDataTable(datatable, SetDataFlags.InsertCells | SetDataFlags.NoColumnHeaders);    
     Myworkbook.SaveAs("D:\\Both.xlsm", SpreadsheetGear.FileFormat.OpenXMLWorkbookMacroEnabled);

【问题讨论】:

标签: c# spreadsheetgear


【解决方案1】:

我在处理大型 Excel 文件时也有过类似的经历。我没有根据电子表格中的单元格数量对此进行量化,而是根据文件大小(大约)

SpreadhsheetGear 将对此给出答案,但据我所知,所花费的时间与将电子表格文件作为实例加载的时间有关,而不是特定操作的特定读/写时间。在您的情况下,考虑到表的大小,很可能是加载数据的时间。

我的建议是您测试各种表/文件大小,以确定您的特定数据类型的大小和速度之间的关系。

替代方法是使用 csv 读/写组件将表输出为 csv 文件,或者使用 XML 文件编写器将表输出为纯 XML。这两种格式都可以读入标准的 Excel 文件。

【讨论】:

猜你喜欢
  • 2013-05-29
  • 1970-01-01
  • 2014-12-16
  • 1970-01-01
  • 2011-08-31
  • 1970-01-01
  • 2016-01-15
  • 2012-11-20
  • 1970-01-01
相关资源
最近更新 更多