导入导出Excel的经验及建议(using .net)

本文介绍了一种通过将Excel文件转换为XML格式来简化数据处理的方法,解决了Excel数据导入导出时常见的格式问题和数据丢失问题。此方法不仅提高了数据处理效率,还确保了数据的一致性和准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于项目需要,我们需要将大量的表格导入、导出到Excel,这个本来没有什么大不了的事情。但是,由于Excel的立足点是电子表格,而不是像 Access或者SQL-Server那样存储数据的,所以Excel里面的数据都是带有很浓重的格式,例如某行数据的格子的左上角有个小小的绿点,这个 是你输入单引号所致,用于表示该为一个字符串的,这个本来没有什么,但是如果同一个列里面既有小绿点,又没有小绿点,这就比较麻烦。还有Excel 的表头你可以设计得异常漂亮,例如冻结啊,彩色,双层,多层啊,带输入提示等等,但是这样做,导入的时候你会很郁闷的。

在网上看到了许多导入的方法,其中一种是把Excel 作为OleDB兼容的一种格式来读,常见的代码是:

 string strConn;
   strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=Excel 8.0;";
   OleDbConnection conn = new OleDbConnection(strConn);
   OleDbDataAdapter oada = new OleDbDataAdapter ( "select * from [" + sheetname + "$]", strConn );
   DataSet ds = new DataSet ();
   oada.Fill ( ds );
   return ds ;

但是,问题就来了,这种方法遇到的问题也是最多的。不知道是OleDb的局限,还是Excel本不适合用于存储数据,1700多条的时候,有时就会有数据丢失的情况,但是最麻烦的莫过于不是严格按照行列规格的存储数据的方式了,还有上面所提及的小绿点的问题。

今天我心血来潮,研究一下Excel对XML的支持情况,在百度搜索 Excel 和 XML ,果然还是有关于这方面的资料。

拿我现在实习所在单位的Excel作为例子:

首先是Excel表的结构,如下图:


如果使用OleDB方式导入,我们将要先将头部去掉只是剩下一行作为表头,去掉表尾那些空的值,这样才可以算基本合格,但是仅仅是基本,后面将会还有很多问题的。

好言归正传,看看怎么将这些数据进行整理成XML。

第一步:写好架构文件

如下图所示:


推荐大家使用XML编辑工具进行编写,细心的朋友也许留意到, element 标签就是表头了。

我们回到Excel进入下一步。

第二步,倒入XML的架构。

打开一个新的Excel文件,点击 数据 >> XML >> XML源



点击XML映射,弹出一个窗口,再点击" 添加" ,然后选取,刚刚写好的 架构文件.


再点击确定.


这样就把架构信息导入来了.

为了使Excel表好看点,我开始编辑Excel表了

第三步,编辑Excel文件

这步,很多朋友都比我厉害了.我这里偷懒,把原来的表头复制过来.


第四步,拖入XML架构.


点击" 岗位认证" 拖入到XML文档中,就可以看到如上图效果了.

现在会出现一个蓝色的方框,你要添加的数据就在这个蓝色方框里添加就可以了.

第五步,复制数据.

在原来的Excel表中复制所有的数据

在蓝色方框中点击右键,粘贴数据



第六步,导出XML


在蓝色方框中右键 >> XML >> 导出,选择好文件名就可以了

以下是导出的XML数据用IE打开的效果,以及用记事本打开的效果。


大家可以看到,已经没有了烦人的格式了,各种信息系统只需面对的是这种仅有数据的XML文件,编成难度大大降低,而且XML作为一种世界倡导的标准,很多编程的语言及平台都是支持,特别是Java 和 .net ,同样的道理信息系统只需要发布这种XML就可以了。

我将XML文件改改,改成只是剩下两行数据。



回到Excel,在蓝色区域中右键 >> XML>> 导入,就可以将XML的数据导入了.你也可以将那个XML架构那一行进行隐藏,看起来更加天衣无缝.

这样可以做到数据格式,两不误了.呵呵.


但是,同样使用这种方式能方便程序员的开发,但是对于已经用惯了Excel 的头头来说,要对每个Excel多做六步,也许是让他们最痛苦的事情了,呵呵.

但是我可以告诉大家,完成整个转换过程不足三分钟.

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值