首页 新闻 会员 周边

C#导出excel 速度慢,难道还真不如JAVA?

0
[已解决问题] 解决于 2014-02-26 10:09

我做的是winform,导出excel要好几分钟,而且只能导一半,我同事用java写的,一下子就导出来了。 高手们帮我看一下。

 Microsoft.Office.Interop.Excel.Application excelApp = new Application();
             Microsoft.Office.Interop.Excel.Workbook wbook = null;
             Microsoft.Office.Interop.Excel.Sheets sheets =null;
             Microsoft.Office.Interop.Excel.Worksheet wkSheet = null;

             Microsoft.Office.Interop.Excel.Range range = null;
             Microsoft.Office.Interop.Excel.Range rangeWire = null;

             wbook = excelApp.Workbooks.Add(true);
             sheets = wbook.Worksheets;
             wkSheet = (Worksheet)sheets.get_Item(1);

             System.Windows.Forms.Application.DoEvents();

             range = wkSheet.get_Range("A1", Missing.Value);
             rangeWire = wkSheet.get_Range("B1", Missing.Value);
             range.Value2 = "浙江";
             rangeWire.Value2 = "某某线";

             wkSheet.Cells[4, 1] = "时间";
             for (int i = 0; i < arrayList.Count; i++)
             {
                 wkSheet.Cells[4, i + 2] = arrayList[i];
                 int j=5;
                 foreach(SubStationRealtimedata subdata in listData)
                 {
                     wkSheet.Cells[j, 1] = subdata.SendTime;
                     wkSheet.Cells[j, i + 2] = subdata.CurrentPhaseA;
                     
                     j++;
                 }
                
             }

             wkSheet.SaveAs("d:\\11.xls");

             wbook.Close();

             excelApp.Quit();
技术先锋的主页 技术先锋 | 菜鸟二级 | 园豆:212
提问于:2014-02-25 19:33
< >
分享
最佳答案
0

亲,你用这种ole automation方式,这种方式现在应该用的不多了,客户端上要安装office才可以,导出excel的时候,会启动excel进程的(但是功能比较强大)

2. 用npoi导出excel还是很方便的,也蛮快的,我平常是够用了

3. closeXml(也是开源的),据说性能更好

奖励园豆:5
秋壶冰月 | 大侠五级 |园豆:5903 | 2014-02-25 21:01

用了npoi速度非常快,感谢各位!

技术先锋 | 园豆:212 (菜鸟二级) | 2014-02-26 10:09
其他回答(4)
0

试一下NPOI看看会不会快些

I,Robot | 园豆:9783 (大侠五级) | 2014-02-25 20:43
0

用openxml去导出试试,楼上说的NPOI也可以试试的

雾静 | 园豆:561 (小虾三级) | 2014-02-25 22:19
0

如果只是导出简单的表格数据,什么 SDK 都不用,直接用 StreamWriter 写 .csv 文件。

Launcher | 园豆:45045 (高人七级) | 2014-02-26 09:08
0

NPOI或者Aspose.Cells都很快的,ole automation方式估计是创建一个sheet然后一格格填的,模拟手工,只是猜测哦,所以会慢。

数据酷软件 | 园豆:130 (初学一级) | 2014-02-26 09:15

感谢各位,谢谢!

支持(0) 反对(0) 技术先锋 | 园豆:212 (菜鸟二级) | 2014-02-26 09:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册