• 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处理。
  • 相关阅读:
    js学习笔记之(call、apply)
    windows8 应用的激活与挂起
    SharePoint2010分享
    Windows8 Metro 设计与开发vs11风格样式
    windows8 应用激活
    Windows8 Metro 设计与开发平台预览
    windows8 账户图片设置
    Windows8 Metro 设计与开发必须关注的新特性
    Windows8 Metro 设计与开发你不知道的C模型
    Windows8 Metro 设计与开发VS11的win8模拟器
  • 原文地址:https://www.cnblogs.com/culnoty/p/4849285.html
Copyright © 2020-2023  润新知