以前采用的这种循环赋值的方法,当数据过多的时候就不能用了
//写入数值 for (int r = 0; r < a_tb.Rows.Count; r++) { for (int i = 0; i < a_tb.Columns.Count; i++) { worksheet.Cells[r + 3, i + 1] = a_tb.Rows[r][i]; } System.Windows.Forms.Application.DoEvents(); fileSaved = true; }
导出到Excel用NPOI很快很方便,不过不支持Excel2007及以上格式。
2007的可以使用EPPLUS
你有没有现成的方法,急用的!
@maanshancss:
http://www.codeplex.com/npoi
NPOI的例子:
HSSFWorkbook hssfworkbook = new HSSFWorkbook(); ISheet sheet1 = hssfworkbook.CreateSheet("Sheet1"); sheet1.CreateRow(0).CreateCell(0).SetCellValue("This is a Sample"); int x = 1; for (int i = 1; i <= 15; i++) { IRow row = sheet1.CreateRow(i); for (int j = 0; j < 15; j++) { row.CreateCell(j).SetCellValue(x++); } }
@向往-SONG: 这样不还是循环赋值? 时间仍是慢呀
@maanshancss:
循环不慢,主要是它创建的对象比officeAPI创建的对象简单,我正在用的导出几十万行数据都没问题,上万条都是瞬间。
最快的方法,选择全部,然后点击查询结果的第一个方格,然后ctrl+c,然后黏贴到Excel
这个可以“手”动导入
一般在绑定到gridview上再导到excel上,速度还可以
程序上可以实现,不难,你博客园里搜一下,有很多解决方案。
Spire.XLS for .NET控件也支持将datatable的数据快速导入Excel工作簿,具体代码教程可以参考他们官网上的教程。这是对应链接https://www.e-iceblue.cn/data/import-or-export-data.html