首页 新闻 会员 周边 捐助

导出excel性能问题

0
悬赏园豆:100 [已关闭问题]

我最近也遇到一个问题,就是从oracle数据库导出到Excel的问题,速度很慢,我跟踪过了,写一条数据就要半秒钟
程序流程如下:1 打开excel模板
2 从数据库中查找sheet名,数据,以及数据的位置
3 写数据

循环执行2,3
数据量大概有1000条,导出几乎要十分钟左右!
希望您给点建议,提高excel导出的速度

zhanxj的主页 zhanxj | 初学一级 | 园豆:100
提问于:2010-05-10 20:47
< >
分享
其他回答(5)
0

用的时间也太长了,是否可以先从数据库把要写的数据存到DataTable里,然后一次性写入Excel里。

Astar | 园豆:40805 (高人七级) | 2010-05-10 20:55
0

谨作参考:
http://www.cnblogs.com/downmoon/archive/2009/01/15/1376702.html

邀月 | 园豆:25475 (高人七级) | 2010-05-10 21:40
0

建议用MyXls

MNight | 园豆:180 (初学一级) | 2010-05-11 09:35
0

不知道你是不是引用了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不要边取边赋值。

马克去去 | 园豆:15 (初学一级) | 2010-05-11 11:29
0

方案一、不使用微软的Office组件,使用第三方提供的组件如NPOI,MYXLS

方案二、根据数据生成html格式的table表格,然后保存为xls文件

上不了岸的鱼 | 园豆:4613 (老鸟四级) | 2010-05-11 14:30
0

导出前先查询有多少数据,然后再分批导,这样比较好。或者是你开个线程,让程序自己倒。

老月花 | 园豆:175 (初学一级) | 2010-05-24 14:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册