C--Excel数据导出方法总结.docVIP

  • 4
  • 0
  • 约6.58千字
  • 约 8页
  • 2016-12-10 发布于重庆
  • 举报
C--Excel数据导出方法总结

C#导出数据到EXCEL方法谈 (附实例源码和详细讲解) C#导出数据到EXCEL表格是个老生常谈的问题了,写这篇文章主要是给和我一样的新手朋友提供两种导出EXCEL的方法并探讨一下导出的效率问题,本文中的代码直接就可用,其中部分代码参考其他的代码并做了修改,抛砖引玉,希望大家一起探讨,如有不对的地方还请大家多多包涵并指出来,我也是个新手,出错也是难免的。 首先先总结下自己知道的导出EXCEL表格的方法,大致有以下几种,有疏漏的请大家补充。 数据逐条逐条的写入EXCEL 通过OLEDB把EXCEL做为数据源来写 通过RANGE范围写入多行多列内存数据到EXCEL 利用系统剪贴板写入EXCEL 好了,我想这些方法已经足够完成我们要实现的功能了,方法不在多,在精,不是么?以上4中方法都可以实现导出EXCEL,方法1为最基础的方法,意思就是效率可能不是太高,当遇到数据量过大时所要付出的时间也是巨大的,后面3种方法都是第一种的衍生,在第一种方法效率低下的基础上改进的,这里主要就是一个效率问题了,当然如果你数据量都很小,我想4种方法就代码量和复杂程度来说第1种基本方法就可以了,或当你的硬件非常牛逼了,那再差的方法也可以高效的完成也没有探讨的实际意义了,呵呵说远了,本文主要是在不考虑硬件或同等硬件条件下单从软件角度出发探讨较好的解决方案。 此项目代码已打包在附件中,几乎注释的无微不至,相信即使刚入门C#的朋友也能看得懂了吧,大家可以自行下载,代码中演示了两种方法,上述的方法1和方法3,我想足够了,方法3的效率应该是四种中最高的了,其他两种有兴趣的朋友自己实现下哈,程序如下图所示,先加载一个EXCEL表格进DATAGRIDVIEW作为数据源,然后两种方法导出EXCEL,配上一个计数功能给大家直观的看到导出的耗时,大家可以准备个几万行和十多行的两个EXCEL作为数据源来测试,也可以用我打包里的XLS来测试下。 首先使用前都需要加载COM组件Microsoft.Office.Interop.Excel.dll(已打包) 关键代码如下: 方法1,最基本方法,用FOR循环逐条写入EXCEL的CELL中,其他的看代码就行了,关键代码如下 public void ToExcel1DataGridView gridView, SaveFileDialog saveFileDialog ........................... for int i 0; i gridView.RowCount; i++ for int j 0; j gridView.ColumnCount; j++ if gridView[j, i].Value typeofstring excel.Cells[i + 2, j + 1] + gridView[i, j].Value.ToString; else excel.Cells[i + 2, j + 1] gridView[j, i].Value.ToString;//进度条加1 progressBar1.Value++; /* * 注意此Application.DoEvents,如果无此句,当切换窗口后回到本程序无法重绘窗体会出现假死状态 * 此处我试过用委托和线程异步调用的方法,但效果没有这句效果好 */System.Windows.Forms.Application.DoEvents; ...................方法2,快速保存内存中大量数据到Excel的WorkSheet。关键之处是使用Range一次存储多行多列数据。 public void ToExcel2DataGridView gridView, SaveFileDialog saveFileDialog .................... System.Reflection.Missing miss System.Reflection.Missing.Value; //创建EXCEL对象appExcel,Workbook对象,Worksheet对象,Range对象 Microsoft.Office.Interop.Excel.Application appExcel; appExcel new Microsoft.Office.Interop.Excel.Application;Microsoft.Office.Interop.Excel.Workbook workbookData;Microsoft.Office.Interop.Excel.Worksheet worksheetData;Microsoft.Office.Interop.Excel.Range rangedata; //设

文档评论(0)

1亿VIP精品文档

相关文档