日期:2014-05-20  浏览次数:21295 次

神奇的速度,C#导出到Excel,真的不是一般的慢啊。
foreach(DataRow   row   in   table.Rows)
{
rowIndex++;
colIndex=0;
foreach(DataColumn   col   in   table.Columns)
{
colIndex++;

//   Excel格式
range   =   excel.get_Range(excel.Cells[rowIndex,colIndex],   excel.Cells[rowIndex,colIndex]);
range.Borders.LineStyle   =   1;
range.Font.Name   =   "宋体 ";
range.Font.Size   =   10;
range.Font.Bold   =   false;
range.HorizontalAlignment   =   Excel.XlHAlign.xlHAlignCenter;
range.ColumnWidth   =   10;

excel.Cells[rowIndex,colIndex]   =   row[col.ColumnName].ToString();
}
}

------解决方案--------------------
excel.dll是比较慢的.

response输出的excel又有格式问题.

我是定义了一个excel(列名只是排序..1-100多...应该够用吧),然后用复制+OLEDB写EXCEL的方法来导出EXCEL.扩展性可能不够好但格式没问题,速度也能接受.
------解决方案--------------------
你把EXCEL当作数据库来添加记录会比你这样一条条加入表中快很多
------解决方案--------------------
楼主每次循环都要设置excel的格式 这会浪费很多时间

建议你先把行数计算好 统一设置好 然后循环中只导出数据即可
或者先导出数据 最后再计算导出行数 再一次性设置格式

另外开始导出的时候 设置
ThisApplication.ScreenUpdating = false;

导出完毕记得设置成true
------解决方案--------------------
再就是可以把调用函数设置为异步执行
ThisApplication.Visible = true;
导出数据完成再设置 这些都会提高运行速度