NPOI操作Excel之NPOI基礎(chǔ)
用C#讀取Excel的方法有很多中,由于近期工作需要,需要解析的Excel含有合并單元格以及背景色等特殊要求,故在網(wǎng)上查了一些關(guān)于讀Excel的方法的優(yōu)缺點(diǎn),覺(jué)得NPOI能滿足我的需要,所以搜索了一些資料做了一些測(cè)試,下面有些內(nèi)容有些是來(lái)源于別人的博客,都備有出處,只是想把一些覺(jué)得對(duì)自己有用的記錄一下,望見(jiàn)諒。
我們先說(shuō)了解一下NPOI的優(yōu)缺點(diǎn):
優(yōu)點(diǎn):讀取數(shù)據(jù)快,讀取方式靈活,包含多個(gè)sheet的Excel單元格合并設(shè)置單元格字段、顏色、設(shè)置單元格為下拉框,并限制輸入值,設(shè)置單元格只能輸入數(shù)據(jù)等(能解決幾乎所有的Excel問(wèn)題)。
缺點(diǎn):不能對(duì)已經(jīng)打開(kāi)的Excel進(jìn)行操作,需要導(dǎo)入多個(gè)dll文件(NPOI、NPOI.HPSF、NPOI.HSSF、NPOI.HSSF.UserModel、NPOI.POIFS、NPOI.Util)
下載地址:http://npoi.codeplex.com
1、常用的基本方法:
創(chuàng)建工作簿 IWorkbook workbook = new XSSFWorkbook();
按指定名稱創(chuàng)建Sheet workbook.CreateSheet("SheetName");
移出Sheet workbook.RemoveSheetAt(SheetIndex);
按名稱獲得Sheet對(duì)象 ISheet sheet = workbook.GetSheet("SheetName ");
根據(jù)索引獲得Sheet對(duì)象 ISheet sheet = workbook.GetSheetAt(SheetIndex);
獲得某一個(gè)ISheet的所有IRow,通常可以用 ISheet.GetRowEnumerator()
獲得某一特定行,可以直接用 ISheet.GetRow(rowIndex)
工作表中第一個(gè)有數(shù)據(jù)行的行號(hào) ISheet.FirstRowNum
工作表中最后一個(gè)有數(shù)據(jù)行的行號(hào) ISheet.LastRowNum
一行中第一個(gè)有數(shù)據(jù)列的列號(hào) IRow.FirstCellNum
一行中最后一個(gè)有數(shù)據(jù)列的列號(hào) IRow.LastCellNum
獲取sheet所有合并單元格索引 ISheet.NumMergedRegions
獲取某合并單元格的地址(i是合并單元格索引) ISheet.GetMergedRegion(i)
獲得數(shù)據(jù)類型CellRangeAddress,含起始行號(hào)和列號(hào)
獲取某單元格值 Row.GetCell(j).StringCellValue.Trim()
公式單元格如果是數(shù)字可以: Row.GetCell(j).NumericCellValue.ToString()
2、NPOI.DLL中包含的模塊
NPOI.Util 基礎(chǔ)輔助庫(kù)
NPOI.POIFS OLE2格式讀寫庫(kù),主要負(fù)責(zé)處理DocumentInformation
NPOI.DDF Microsoft Drawing格式讀寫庫(kù)
NPOI.SS Excel 2003和Excel 2007操作庫(kù)共用的接口庫(kù)以及公用模塊實(shí)現(xiàn),如公式計(jì)算庫(kù)
NPOI.HPSF OLE2的Summary Information和Document Summary Information屬性讀寫庫(kù)
NPOI.HSSF Excel BIFF格式讀寫庫(kù),這是用戶用的最多的命名空間
3、NPOI.OOXML.DLL中包含的模塊(主要是2007版本操作方法)
NPOI.XSSF Excel 2007操作庫(kù),大部分對(duì)象都實(shí)現(xiàn)了NPOI.SS的接口
NPOI.XWPF Word 2007操作庫(kù)
4、EXCEL單元格值基本類型
Unknown = -1, // 未知
Numeric = 0, // 數(shù)值型
String = 1, // 文本型
Formula = 2, // 公式型
Blank = 3, // 空白
Boolean = 4, // 布爾型
Error = 5, // 錯(cuò)誤
參考:http://www.cnblogs.com/csqb-511612371/p/4878059.html
https://www.cnblogs.com/zqyw/category/1070314.html
本文轉(zhuǎn)載自微信公眾號(hào)「CSharp編程大全」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系CSharp編程大全公眾號(hào)。