您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 甘孜分类信息网,免费分类信息发布

C#如何导入导出与处理Excel文件

2024/4/19 16:13:05发布42次查看
oledb是微软的战略性的通向不同的数据源的低级应用程序接口。支持很多种数据库,此客户端中dbf文件的输入输出也是使用了此数据库api。使用oledb记得添加上命名空间:
using system.data.oledb;
xlsx文件的输入:
private void inputxlsx() { string strconn2; string filepath = inpath; fileinfo fileinfo = new fileinfo(filepath); string directory = fileinfo.directoryname; strconn2 = @"provider=microsoft.ace.oledb.12.0;data source='{0}';extended properties='excel 8.0;hdr=yes;imex=1;';"; string strconnection = string.format(strconn2, inpath); oledbconnection conn = new oledbconnection(strconnection); try { conn.open(); string tablename = null; datatable dt = conn.getoledbschematable(oledbschemaguid.tables, null); tablename = dt.rows[0][2].tostring().trim(); oledbdataadapter oada = new oledbdataadapter("select * from [" + tablename + "]", strconnection); oada.fill(dtold); conn.close(); } catch (exception ex) { conn.close(); } }
xlsx文件的中间处理过程因需求而异,在此不再赘述处理方式。在输入过程中,将文件中的数据转化成了datatable数据类型的格式,它是一个临时保存数据的网格虚拟表,处理非常方便。
xlsx文件的输出:xlsx文件的输出过程并不是很顺利,先后使用了三种方式。
第一种方式自然就是oledb了,有始有终嘛。但是真正使用的过程中发现此方式不仅要求程序运行本机必须安装excel,而且对excel版本要求非常高,如果删注册表很容易弄巧成拙,我改注册表就直接玩坏了excel。事实上我们并不能保证客户的机器上一定安装了对应版本的excel,所以如果使用oledb输出文件,此客户端的兼容性将非常的低劣。
经过一番沟通和挣扎决定还是换一种方式,决定改用第三方组件。由于java方使用的是poi,所以这边直接使用poi项目的.net版本,npoi。网上教程很多,很好实现,但是经过测试之后,此种方式对大文件的输入输出支持的不是很好,处理demo文件没有问题,但是换成了真正客户提供的十万行级甚至百万行级的文件,客户端直接在输出的过程中崩掉。
查询资料后,网友们对于大文件都建议使用epplus。教程也是一抓一大把,我没有继续加大文件大小测试,不过客户给我们提供的十来个文件全部测试通过,基本上都是百万级以下的。
上代码吧:
private void outputxlsx() { fileinfo newfile = new fileinfo(dtnew.tablename + ".xlsx"); if (newfile.exists) { newfile.delete(); newfile = new fileinfo(dtnew.tablename + ".xlsx"); } using (excelpackage package = new excelpackage(newfile)) { excelworksheet worksheet = package.workbook.worksheets.add(dtnew.tablename);//创建worksheet for (int m = 0; m < dtnew.columns.count; m++) { worksheet.cells[1, m + 1].value = dtnew.columns[m]; } int i = 1; foreach (datarow dr in dtnew.rows) { for (int j = 0; j < dtnew.columns.count; j++) { worksheet.cells[i + 1, j + 1].value = dr[j]; } i++; } package.save();//保存excel } }
甘孜分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录