用的时间也太长了,是否可以先从数据库把要写的数据存到DataTable里,然后一次性写入Excel里。
谨作参考:
http://www.cnblogs.com/downmoon/archive/2009/01/15/1376702.html
建议用MyXls
不知道你是不是引用了Microsoft.Office.Interop.Excel组件来创建和赋值Excel,代码
代码
Excel.Application appExcel = new Excel.Application();
Excel.Workbook wb= appExcel.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);
Excel.Worksheet sheet = (Excel.Worksheet)wb.ActiveSheet;
//DataTable dt给赋值
for (int i = 0; i < dt.Rows.Count; i++)
{
for (int j = 0; j < dt.Columns.Count; j++)
{
Excel.Range Range = (Excel.Range)sheet.Cells[i + 1, j + 1];
Range.Value2 = dt.Rows[i][j];
}
}
Microsoft.Office.Interop.Excel组件创建Excel性能是挺低的,但绝对不会像楼主说的那么慢,我试过几千条数据需要大概2,3秒钟。楼主可以检查下是不是从数据库取数影响了速度,创建Excel时最好是先把数放在DataTable或DataSet(适用于创建多Sheet的Excel),sheetname不要边取边赋值。
方案一、不使用微软的Office组件,使用第三方提供的组件如NPOI,MYXLS
方案二、根据数据生成html格式的table表格,然后保存为xls文件
导出前先查询有多少数据,然后再分批导,这样比较好。或者是你开个线程,让程序自己倒。