• ASP.NET通过OLE DB操作Excel


    ASP.NET 操作Excel目前有比较多的方法,常用的有三种:COM组件,OLE DB,和NOPI插件。

    #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位的操作系统需要特殊处理。

    (4)Microsoft.ACE.OLEDB.12.0 基本是Microsoft.Jet.OLEDB.4.0的替代版本,同时提供32位和64位两个版本。

    #3 NPOI
    优点:
    (1)运行的机器不需要安装了相应版本的Excel
    (2)能很好的读取Excel的实际值,包括公式的处理,堪称完美
    (3)没有资源释放的忧虑

    缺点:
    (1)现时最新版本的NPOI版本只支持Excel2003,其官方微博宣称会在2012年底实现对Excel2007的支持,我们还是耐心等待一会吧
    (2)不能很好地处理Excel的显示值,笔者试过跟踪代码,都未能发现一个和显示值完全一致的方法或者属性,这让我觉得NPOI不能很好地处理Excel的显示值

  • 相关阅读:
    [bzoj4241] 历史研究 (分块)
    [tyvj2054] 四叶草魔杖 (最小生成树 状压dp)
    20180710 考试记录
    [luogu2047 NOI2007] 社交网络 (floyed最短路)
    [luogu2081 NOI2012] 迷失游乐园 (树形期望dp 基环树)
    [luogu1600 noip2016] 天天爱跑步 (树上差分)
    [luogu2216 HAOI2007] 理想的正方形 (2dST表 or 单调队列)
    [poj 3539] Elevator (同余类bfs)
    [BZOJ1999] 树网的核 [数据加强版] (树的直径)
    bzoj2301 [HAOI2011]Problem b
  • 原文地址:https://www.cnblogs.com/weiming/p/2553894.html
Copyright © 2020-2023  润新知