C# 使用SpreadSheetGear使用NoColumnHeader快速将数据表复制到Excel中
我有一个包含30000行和大约50列的表,我必须将所有这些数据复制到Excel工作表(.xlsm)中,没有列标题,但我当前的方法需要相当长的时间。这是我的代码,有人能告诉我如何改进它以快速将数据填充到Excel或任何其他方法吗C# 使用SpreadSheetGear使用NoColumnHeader快速将数据表复制到Excel中,c#,spreadsheetgear,C#,Spreadsheetgear,我有一个包含30000行和大约50列的表,我必须将所有这些数据复制到Excel工作表(.xlsm)中,没有列标题,但我当前的方法需要相当长的时间。这是我的代码,有人能告诉我如何改进它以快速将数据填充到Excel或任何其他方法吗 string Sqlcmd; Sqlcmd = "select Number ,Name1, Name 2 from MyTempData"; SqlCommand command = new SqlCommand(Sqlcmd, con);
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);
我也有过类似的处理大型Excel文件的经验。我没有用电子表格中的单元格数量来量化这一点,但用文件大小(大致)<1MB文件大小=几秒钟,5-10MB=10-15秒,15-20MB=30-60秒来量化 SpreadhsheetGear将对此有一个答案,但从我所看到的时间与加载电子表格文件作为实例的时间有关,而不是特定操作的特定读/写时间。在您的情况下,考虑到表的大小,很可能是加载数据的时候了 我的建议是测试各种表/文件大小,以确定特定数据类型的大小和速度之间的关系
替代方法是使用csv读/写组件将表输出为csv文件,或使用XML文件编写器将其输出为纯XML。这两种格式都可以读入标准Excel文件 在中会更好吗?我肯定会推荐JSON而不是XML。是的,但我不知道Excel中有导入JSON的标准功能。但是,此处讨论了此选项: