用c#讀取excel的方法有很多中,由於近期工作需要,需要解析的excel含有合併單元格以及背景色等特殊要求,故在網上查了一些關於讀excel的方法的優缺點,覺得npoi能滿足我的需要,所以搜尋了一些資料做了一些測試,下面有些內容有些是**於別人的部落格,都備有出處,只是想把一些覺得對自己有用的記錄一下,望見諒。
我們先說了解一下npoi的優缺點:
優點:讀取資料快,讀取方式靈活,包含多個sheet的excel單元格合併設定單元格字段、顏色、設定單元格為下拉框,並限制輸入值,設定單元格只能輸入資料等(能解決幾乎所有的excel問題)。
缺點:不能對已經開啟的excel進行操作,需要匯入多個dll檔案(npoi、npoi.hpsf、npoi.hssf、npoi.hssf.usermodel、npoi.poifs、npoi.util
)1、常用的基本方法:
建立工作簿 iworkbook workbook = new xssfworkbook();
按指定名稱建立sheet workbook.createsheet("sheetname");
移出sheet workbook.removesheetat(sheetindex);
按名稱獲得sheet物件 isheet sheet = workbook.getsheet("sheetname ");
根據索引獲得sheet物件 isheet sheet = workbook.getsheetat(sheetindex);
獲得某乙個isheet的所有irow,通常可以用 isheet.getrowenumerator()
獲得某一特定行,可以直接用 isheet.getrow(rowindex)
工作表中第乙個有資料行的行號 isheet.firstrownum
工作表中最後乙個有資料行的行號 isheet.lastrownum
一行中第乙個有資料列的列號 irow.firstcellnum
一行中最後乙個有資料列的列號 irow.lastcellnum
獲取sheet所有合併單元格索引 isheet.nummergedregions
獲取某合併單元格的位址(i是合併單元格索引) isheet.getmergedregion(i)
獲得資料型別cellrangeaddress,含起始行號和列號
獲取某單元格值 row.getcell(j).stringcellvalue.trim()
公式單元格如果是數字可以: row.getcell(j).numericcellvalue.tostring()
2、npoi.dll中包含的模組
npoi.util 基礎輔助庫
npoi.poifs ole2格式讀寫庫,主要負責處理documentinformation
npoi.ddf microsoft drawing格式讀寫庫
npoi.ss excel 2003和excel 2007操作庫共用的介面庫以及公用模組實現,如公式計算庫
npoi.hpsf ole2的summary information和document summary information屬性讀寫庫
npoi.hssf excel biff格式讀寫庫,這是使用者用的最多的命名空間
3、npoi.ooxml.dll中包含的模組(主要是2007版本操作方法)
npoi.xssf excel 2007操作庫,大部分物件都實現了npoi.ss的介面
npoi.xwpf word 2007操作庫
4、excel單元格值基本型別
unknown = -1, // 未知
numeric = 0, // 數值型
string = 1, // 文字型
formula = 2, // 公式型
blank = 3, // 空白
boolean = 4, // 布林型
error = 5, // 錯誤
參考:
利用NPOI操作excel匯出
npoi外掛程式要.netframe4.0 開啟excel按鈕事件 private void button1 click object sender,eventargs e private void button2 click object sender,eventargs e if datearr...
NPOI 初次操作(新建Excel)
1.由於在某些電腦上沒有安裝office,或者有許可權限制,使用com元件進行讀寫excel的話會出現問題,為此,npoi是乙個很好的選擇,npoi可以在上述環境中滿足office的操作需求,並且功能也很完善。2.初次接觸npoi,花了一些時間來學習一下,以下 功能是建立乙個工作簿,修改然後儲存。3...
Npoi匯入匯出Excel操作
datatable匯出excel private static void gridtoexcelbynpoi datatable dt,string strexcelfilename icellstyle cellstyle workbook.createcellstyle 為避免日期格式被exce...