當前主流讀取Excel技術對比


     筆者主要在一家金融公司從事開發工作,需要長期與數據打交道,因此,經常逃不掉關於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的請查看利用Oledb讀取Excel,NPOI的請查看利用NPOI讀取Excel,至於COM組件讀取Excel的代碼筆者也有寫過,只是礙於寫得過於粗糙凌亂,顧暫不奉上,待歸納封裝后再提供給諸位讀者。

           如有表達失當的地方,還請諸位讀者斧正。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM