博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
当前主流读取Excel技术对比
阅读量:5133 次
发布时间:2019-06-13

本文共 1151 字,大约阅读时间需要 3 分钟。

     笔者主要在一家金融公司从事开发工作,需要长期与数据打交道,因此,经常逃不掉关于Excel的操作。在此,笔者想对比下当前主流的读取Excel的技术。笔者认为当前比较主流的读取Excel技术包括COM组件,OleDb,和NOPI。 这里我们设定情景为将Excel读成DataSet或者DataTable。

       #1 COM组件

        优点:

        (1)能读取各种版本的Excel,包括2003,2007,2010

        (2)能够较好的读取Excel的显示值和实际值(包括存在公式的情况)

       

        缺点:

       (1)运行的机器需要安装了相应版本的Excel

       (2)使用后不能很好的完成资源释放工作,很多时候需要通过杀掉Excel进程或者根据进程号去杀掉对应的进程来实现资源释放

 

       #2 OleDb

        优点:

       (1)能读取各种版本的Excel,包括2003,2007,2010

       (2)运行的机器不需要安装了相应版本的Excel

       (3)没有资源释放的忧虑

 

         缺点:

        (1)不能很好地处理Excel的显示值和实际值,尤其是不能很好地处理公式

        (2)列类型的判断逻辑不合理,当指定了首行作为头(header)的时候,Oledb会根据该列的前若干行数据类型类判断该列的数据类型,这会导致数据丢失。例如某列前n行都为int,列的数据类型被判断为int,那么n+1行后的非可转为int的数据都会被清空。

        (3)Microsoft.Jet.OLEDB.4.0 不支持64位的操作系统,在64位的操作系统需要特殊处理。

 

          #3 NPOI

         优点:

         (1)运行的机器不需要安装了相应版本的Excel

         (2)能很好的读取Excel的实际值,包括公式的处理,堪称完美

         (3)没有资源释放的忧虑

 

          缺点:

         (1)现时最新版本的NPOI版本只支持Excel2003,其官方微博宣称会在2012年底实现对Excel2007的支持,我们还是耐心等待一会吧

         (2)不能很好地处理Excel的显示值,笔者试过跟踪代码,都未能发现一个和显示值完全一致的方法或者属性,这让我觉得NPOI不能很好地处理Excel的显示值

 

          //TODO:遗漏,细心的读者可能会发现,这里没有谈到各种技术对读取Excel里的图片的处理情况。现今笔者确实没有对这方面进行相关的研究,但后续我会添加相关的研究结论。我提供了一个OleDb和一个NPOI读取Excel的代码供大家参考研究。OleDb的请查看,NPOI的请查看,至于COM组件读取Excel的代码笔者也有写过,只是碍于写得过于粗糙凌乱,顾暂不奉上,待归纳封装后再提供给诸位读者。

           如有表达失当的地方,还请诸位读者斧正。

转载于:https://www.cnblogs.com/Erik_Xu/archive/2012/06/08/2540832.html

你可能感兴趣的文章
浅谈Angular的 $q, defer, promise
查看>>
Linux while 和 read 的用法
查看>>
iOS开发UI篇—核心动画(基础动画)
查看>>
第二次作业
查看>>
Java异常封装(自己定义错误码和描述,附源码)
查看>>
首页视频
查看>>
数组的创建及使用
查看>>
Vagrant安装完lnmp后,配置linux和windows共享文件并配置虚拟主机访问项目
查看>>
C#多线程那点事——信号量(Semaphore) Semaphore 信号量
查看>>
浏览器的线程有哪些
查看>>
PyTorch 实现kmax-pooling
查看>>
数据库点滴积累——查询
查看>>
将 Excel 导入到 SharePoint 列表
查看>>
C#中的yield关键字
查看>>
PHP获取中英文混合字符串长度及截取
查看>>
uva 11584 Partitioning by Palindromes(dp)
查看>>
面试题学习总结--三
查看>>
leetcode简单题目两道(5)
查看>>
(1)数据结构——线性表(数组)实现
查看>>
Content Providers的步骤,来自官网文档
查看>>