最近好多人都在问导入导出的问题,以前使用的办法导入导出的速度慢,不是很满意,网上找的 很多没有下载地址 有代码 没类库 有03 没07 有导入 没导出 很是不全.。也遇到过这样的问题:”自己之前一直被这个问题困扰,也在网上找了很多资料,大部分都是用杀死进程的方法来解决,个人觉得这个太影响代码美观了.今天偶然发现了解决办法.给大家共享一下。现象 :我在C#中,需要从EXCEL导入或者导出数据,当导入导出结束后,使用excelApp.Quit()关闭EXCEL对象,但系统进程中仍然存在EXCEL进程.并没有关闭。原因:其实excelApp.Quit();方法是可以正确的释放EXCEL进程的,我们导入导出EXCEL时,普遍方法是代码后台处理,前台并隐藏EXCEL界面,也就是excelApp.Visible = false (这是默认值,不设置的话也是False),当调用 excelApp.Quit()时,EXCELE会弹出个对话框,问你是否保存,而excelApp.Visible = false 时,保存对话框也一并隐藏掉了,所以EXCEL卡在了这个地方,造成了EXCEL不能正常释放进程。
解决方法:设置excelApp.DisplayAlerts = false,就是不提问任何提示,这样再关闭EXCEL对象时,就不会有保存提示,也就不会卡住了.“,后来发现这种办法也不是很凑效,有时候也还是会出现。
所以今天整理了下,封装了下,大家可以自行下载(提取码:cd70)
导入支持03跟07
导出也是支持03跟07
我在例子中测试导出的是
var dt = new System.Data.DataTable(); var Columns=Enumerable.Range(1, 10).Select(d => new DataColumn("a"+d.ToString(), typeof(string))).ToArray(); dt.Columns.AddRange(Columns); for (int i = 0; i < 33333; i++) { var id = Guid.NewGuid().ToString(); dt.Rows.Add(id, id, id, id, id, id, id, id, id, id); }
一个有10列33333行的表..数据都是GUID 测试效果还可以...