C# 读写Excel文件


公司遇到一些tasks,需要将分析完毕的数据结果保存在Excel文件中。陆陆续续参与了这么多tasks后,现简单总结下: 操纵Excel 文件有多种方法,每种方法都有特色,适用于不同场景。 方法1:调用Office com组件: 也就是调用Interop类。此方法适用于desktop已经安装有Windows Office的情况。功能及其强大,windows Office拥有的功能,几乎通过此都能调用。劣势是读写速度最慢。 方法2:使用ODBC技术读写Excel文件 该方法读写速度似乎最快(没有准确的数据对比,只是平时开发时候的感觉体会)。要注意的是Office Excel 2007及以后采用了OpenXml的文件封装格式,一改之前的二进制格式,相应有配套两个ODBC驱动。缺点是准确性差,文档内容如果有不合规范的,会出现内容丢失等异常。该方法最大的问题是如果Excel文件不是极其“标准”(没有公式,没有图等)的话ODBC无法识别sheets。 此时的解决办法是。。。。。。。使用方法1对excel 文件进行预处理,也就是调用InterOP操纵NameManager。define sheet。 方法3:使用MicroSoft退出的Office 大杀器: OpenXml2.5 。该工具顾名思义只适合于Excel2007及以后的格式,囊括了几乎所有的操纵Office文件函数。优点是功能强悍,速度比较快。准确性高,输出的Excel文件一般不会有格式问题,缺点也是由其优点而生,由于功能太多新手上手慢,学习曲线比较陡峭。而且性能优化的可操作余地不是很大。 该方法通常很稳定,不过极偶然条件下会造成格式问题,不能正常写入数据。(很是蛋疼。。。。)也就是在这种情况下促使本人摸索出了方法4. 方法4: 直接xml操纵 这也是本人最近开发和采用的办法,适用于大批量写入数据的情况。原理完全同方法3。优点是将Excel文件当做XML文件来处理,以处理xml文件的方法来处理Excel。需要用到OpenXml也用到到一个工具类:Packaging,使用该类来解压缩Excel文件。 该方式具有很大的灵活性,只要肯花功夫能完全代替openxml(本来就原理相同。。。谔谔)。本人仅仅实现了项目需要的数据批量写入,优点是性能高,写入速度快。空白sheet写入1000行*10列数据测试大概需要30 seconds。性能比openxml有所提高,相信继续优化的话性能还可以提高很多。 缺点是功能简单,需要自己手工开发,刚开始比较麻烦,需要熟悉xml处理。 优质内容筛选与推荐>>
1、面试题:python 中 staticmethod 和 classmethod有什么区别
2、函数
3、VMware-WorkStation 序列号(转)
4、在其他网站写的blog,转过来一起放了
5、块设备驱动指的是文件系统驱动(FAL+FMD)吗


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号