引言
項目中常用到將數據導入Excel,將Excel中的數據導入數據庫的功能,曾經也查找過相關的內容,將曾經用過的方案總結一下。
方案一
NPOI
NPOI 是 POI 項目的 .NET 版本。POI是一個開源的Java讀寫Excel、WORD等微軟OLE2組件文檔的項目。
使用 NPOI 你就可以在沒有安裝 Office 或者相應環境的機器上對 WORD/EXCEL 文檔進行讀寫。NPOI是構建在POI 3.x版本之上的,它可以在沒有安裝Office的情況下對Word/Excel文檔進行讀寫操作。
優勢
(一)傳統操作Excel遇到的問題:
1、如果是.NET,需要在服務器端裝Office,且及時更新它,以防漏洞,還需要設定權限允許.NET訪問COM+,如果在導出過程中出問題可能導致服務器宕機。
2、Excel會把只包含數字的列進行類型轉換,本來是文本型的,Excel會將其轉成數值型的,比如編號000123會變成123。
3、導出時,如果字段內容以“-”或“=”開頭,Excel會把它當成公式進行,會報錯。
4、Excel會根據Excel文件前8行分析數據類型,如果正好你前8行某一列只是數字,那它會認為該列為數值型,自動將該列轉變成類似1.42702E+17格式,日期列變成包含日期和數字的。
(二)使用NPOI的優勢
1、您可以完全免費使用該框架
2、包含了大部分EXCEL的特性(單元格樣式、數據格式、公式等等)
3、專業的技術支持服務(24*7全天候) (非免費)
4、支持處理的文件格式包括xls, xlsx, docx.
5、采用面向接口的設計架構( 可以查看 NPOI.SS 的命名空間)
6、同時支持文件的導入和導出
7、基于.net 2.0 也支持xlsx 和 docx格式(當然也支持.net 4.0)
8、來自全世界大量成功且真實的測試Cases
9、大量的實例代碼
11、你不需要在服務器上安裝微軟的Office,可以避免版權問題。
12、使用起來比Office PIA的API更加方便,更人性化。
13、你不用去花大力氣維護NPOI,NPOI Team會不斷更新、改善NPOI,絕對省成本。
NPOI之所以強大,并不是因為它支持導出Excel,而是因為它支持導入Excel,并能“理解”OLE2文檔結構,這也是其他一些Excel讀寫庫比較弱的方面。通常,讀入并理解結構遠比導出來得復雜,因為導入你必須假設一切情況都是可能的,而生成你只要保證滿足你自己需求就可以了,如果把導入需求和生成需求比做兩個集合,那么生成需求通常都是導入需求的子集,這一規律不僅體現在Excel讀寫庫中,也體現在pdf讀寫庫中,目前市面上大部分的pdf庫僅支持生成,不支持導入。
構成
NPOI 1.2.x主要由POIFS、DDF、HPSF、HSSF、SS、Util六部分組成。
NPOI.POIFS
OLE2/ActiveX文檔屬性讀寫庫
NPOI.DDF
Microsoft Office Drawing讀寫庫
NPOI.HPSF
OLE2/ActiveX文檔讀寫庫
NPOI.HSSF
Microsoft Excel BIFF(Excel 97-2003)格式讀寫庫
NPOI.SS
Excel公用接口及Excel公式計算引擎
NPOI.Util
基礎類庫,提供了很多實用功能,可用于其他讀寫文件格式項目的開發
NPOI組成部分
NPOI 1.x的最新版為NPOI 1.2.5,其中包括了以下功能:
1、讀寫OLE2文檔
2、讀寫DocummentSummaryInformation和SummaryInformation
3、基于LittleEndian的字節讀寫
4、讀寫Excel BIFF格式
5、識別并讀寫Excel BIFF中的常見Record,如RowRecord, StyleRecord, ExtendedFormatRecord
新聞熱點
疑難解答