Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用SpreadSheetGear使用NoColumnHeader快速将数据表复制到Excel中_C#_Spreadsheetgear - Fatal编程技术网

C# 使用SpreadSheetGear使用NoColumnHeader快速将数据表复制到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);

我有一个包含30000行和大约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);

我也有过类似的处理大型Excel文件的经验。我没有用电子表格中的单元格数量来量化这一点,但用文件大小(大致)<1MB文件大小=几秒钟,5-10MB=10-15秒,15-20MB=30-60秒来量化

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

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


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

在中会更好吗?我肯定会推荐JSON而不是XML。是的,但我不知道Excel中有导入JSON的标准功能。但是,此处讨论了此选项: