现在要把数据从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语句实现.
------解决方案--------------------------------------------------------
我们在程序中能做的只能是优化查询及导出.