当前位置: 代码迷 >> ASP.NET >> ASP.NET DATASET 导出到excel速度很慢,该如何解决
  详细解决方案

ASP.NET DATASET 导出到excel速度很慢,该如何解决

热度:10187   发布时间:2013-02-25 00:00:00.0
ASP.NET DATASET 导出到excel速度很慢
现在要把数据从dataset导出到excel 测试数据1W条,如果只导出小部分的话 速度还能接受,但是全部导出的话,
十几分钟倒不出来。网上虽然有导出的比较快的方法,但是导出的是伪excle文件,不能导入的。下面是我用的代码,也是网上找的:
C# code
        string excelName ="\\"+ DateTime.Now.ToString("yyyyMMddhhmmss") + ".xls";        string path = Server.MapPath("upfiles") + excelName;        Excel.Application excel = new Excel.Application();  //Execl的操作类        //读取保存目标的对象        Excel.Workbook bookDest = (Excel.WorkbookClass)excel.Workbooks.Add(Missing.Value);        Excel.Worksheet sheetDest = bookDest.Worksheets.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value) as Excel.Worksheet;//给工作薄添加一个Sheet           sheetDest.Rows.RowHeight = 20;        sheetDest.Name = strSheetName;        int rowIndex = 1;        int colIndex = 0;        excel.Application.Workbooks.Add(true);        foreach (DataColumn col in dt.Columns)        {            colIndex++;            sheetDest.Cells[1, colIndex] = col.ColumnName;        }        //导入数据行        foreach (DataRow row in dt.Rows)        {            rowIndex++;            colIndex = 0;            foreach (DataColumn col in dt.Columns)            {                colIndex++;                sheetDest.Cells[rowIndex, colIndex] = row[col.ColumnName].ToString();                            }        }        bookDest.Saved = true;        bookDest.SaveCopyAs(path);        excel.Quit();        excel = null;        GC.Collect();



麻烦给位提点建议,有代码更好,速度别太慢就行。


------解决方案--------------------------------------------------------
没办法,除非你很清楚excel的数据结构,用流写入
------解决方案--------------------------------------------------------
用多线程导吧 !

一个线程负责1000条!

------解决方案--------------------------------------------------------
试试 NPOI或aspose.cells
------解决方案--------------------------------------------------------
可能得用aspose.cells等组件。
------解决方案--------------------------------------------------------
分批吧
------解决方案--------------------------------------------------------
DataTable就这速度了,如果要速度好的,数据库有个自带的导出的功能,可以用sql语句实现.
------解决方案--------------------------------------------------------
我们在程序中能做的只能是优化查询及导出.
  相关解决方案