收藏 分享(赏)

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

上传人:dreamzhangning 文档编号:2300766 上传时间:2018-09-10 格式:DOC 页数:8 大小:80.50KB
下载 相关 举报
C#--Excel数据导出方法总结.doc_第1页
第1页 / 共8页
C#--Excel数据导出方法总结.doc_第2页
第2页 / 共8页
C#--Excel数据导出方法总结.doc_第3页
第3页 / 共8页
C#--Excel数据导出方法总结.doc_第4页
第4页 / 共8页
C#--Excel数据导出方法总结.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、C#导出数据到EXCEL方法谈(附实例源码和详细讲解)如果你耐心仔细看完本文,相信以后再遇到导出EXCLE操作的时候你会很顺手觉得SO EASY,主要给新手朋友们看的,老鸟可以直接飘过了,花了一晚上的时间写的很辛苦,如果觉得对你有帮助烦请留言支持一下,我会写更多基础的原创内容来回报大家。C#导出数据到 EXCEL表格是个老生常谈的问题了,写这篇文章主要是给和我一样的新手朋友提供两种导出EXCEL的方法并探讨一下导出的效率问题,本文中的代码直接就可用,其中部分代码参考其他的代码并做了修改,抛砖引玉,希望大家一起探讨,如有不对的地方还请大家多多包涵并指出来,我也是个新手,出错也是难免的。首先先总结

2、下自己知道的导出EXCEL表格的方法,大致有以下几种,有疏漏的请大家补充。1.数据逐条逐条的写入EXCEL2.通过OLEDB把EXCEL做为数据源来写3.通过RANGE范围写入多行多列内存数据到EXCEL4.利用系统剪贴板写入EXCEL好了,我想这些方法已经足够完成我们要实现的功能了,方法不在多,在精,不是么?以上4中方法都可以实现导出EXCEL,方法1 为最基础的方法,意思就是效率可能不是太高,当遇到数据量过大时所要付出的时间也是巨大的,后面3种方法都是第一种的衍生,在第一种方法效率低下的基础上改进的,这里主要就是一个效率问题了,当然如果你数据量都很小,我想4种方法就代码量和复杂程度来说第1

3、 种基本方法就可以了,或当你的硬件非常牛逼了,那再差的方法也可以高效的完成也没有探讨的实际意义了,呵呵说远了,本文主要是在不考虑硬件或同等硬件条件下单从软件角度出发探讨较好的解决方案。此项目代码已打包在附件中,几乎注释的无微不至,在配合本文中我唐僧般的娓娓道来(靠,谁丢臭鸡蛋砸俺了 ),相信即使刚入门C#的朋友也能看得懂了吧,大家可以自行下载,代码中演示了两种方法,上述的方法1 和方法 3,我想足够了,方法 3的效率应该是四种中最高的了,其他两种有兴趣的朋友自己实现下哈(方法2在我的程序中也有用到一些,看完你就知道了),程序如下图所示,先加载一个EXCEL表格进DATAGRIDVIEW作为数据

4、源,然后两种方法导出EXCEL,配上一个计数功能给大家直观的看到导出的耗时,大家可以准备个几万行和十多行的两个EXCEL作为数据源来测试,也可以用我打包里的XLS来测试下。首先使用前都需要加载COM组件Microsoft.Office.Interop.Excel.dll(已打包)关键代码如下:方法1,最基本方法,用FOR循环逐条写入EXCEL 的CELL 中,其他的看代码就行了,关键代码如下public void ToExcel1(DataGridView gridView, SaveFileDialog saveFileDialog).for (int i = 0; i / 结束EXCEL.

5、EXE进 程的方法/ / EXCEL对 象DllImport(“user32.dll“, SetLastError = true)static extern int GetWindowThreadProcessId(IntPtr hWnd, out int lpdwProcessId);public void KillSpecialExcel(Microsoft.Office.Interop.Excel.Application m_objExcel)tryif (m_objExcel != null)int lpdwProcessId;GetWindowThreadProcessId(new

6、IntPtr(m_objExcel.Hwnd), out lpdwProcessId); System.Diagnostics.Process.GetProcessById(lpdwProcessId).Kill();catch (Exception ex)MessageBox.Show(ex.Message);2.代 码 里写了个加 载EXCEL到DATAGRIDVIEW的方法,就是想本来就是在写EXCEL操作相关嘛,干脆数据源也用EXCEL,该方法就是把EXCEL作为OLEDB数据源这样来操作的,你是不是想到前面我所提到的四种导出EXCEL中的方法2通过OLEDB把 EXCEL做为数据源来

7、写呢,对了,有兴趣你可以尝试修改下通过OLEDB这样来导出EXCEL,当然,新手朋友可以看下如何加载EXCEL数据,你应该希望去尝试接着如何把这些数据储存到数据库之类的操作3.System.Windows.Forms.Application.DoEvents(),当运行 Windows 窗体时,它将创建新窗体,然后该窗体等待处理事件。该窗体在每次处理事件时,均将处理与该事件关联的所有代码。所有其他事件在队列中等待。在代码处理事件时,应用程序并不响应。例如,当将另一窗口拖到该窗口前面时,该窗口不重新绘制。如果在代码中调用 DoEvents,则您的应用程序可以处理其他事件。例如,如果您有向 Lis

8、tBox 添加数据的窗体,并将 DoEvents 添加到代码中,那么当将另一窗口拖到您的窗体上时,该窗体将重新绘制。如果从代码中移除 DoEvents,那么在按钮的单击事件处理程序 执行结束以前,您的窗体不会重新绘制。这里说远一点,关于如何防止UI假死其实还有更科学的方法,就是使用委托加线程异步执行,把耗时的操作另起进程执行,从而减轻UI的压力,使得前台UI流畅运行而不假死,多用this.Invoke等,但在我程序用我也测试过反而直接DoEvents效果还好的多,而且线程和委托可能对新手朋友稍微复杂了些,推荐一般应用用DoEvents 足够了哦。好了,东西不多废话一大篇,手都写累了,基本上用到的方法都做了详细的解释了,呵呵,希望以后大家多多交流,本人菜鸟一个,写本文就是因为自己也得到过很多热心网友的指导和帮助,也希望分享一些自己的东西作为回报,人人为我,我为人人,学会做个懂得感恩的人比什么都重要,欢迎大家和我一起学习套谈C#,QQ:296326,EMail:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报