1、創建一個空白的xls文件
Step1:先引入庫NPOI.dll文件
Step2:
①:實例化一個workbook,實為在內存表中創建一個xls文件
NPOI.HSSF.UserModel.HSSFWorkbook workbook = new NPOI.HSSF.UserModel.HSSFWorkbook();
但是,如果打開此時的workbook會報錯,原因是至少需要包含一個Sheet
②:創建一個Sheet,如果方法不帶參數,系統自動給出SheetName,帶一個參數表示自定義SheetName
NPOI.SS.UserModel.ISheet sheet = workbook.CreateSheet("Sheet1");
③:最后就是把這個HSSFWorkbook實例寫入文件了,代碼也很簡單,如下所示:
FileStream fs = new FileStream("1.xls", FileMode.Create); workbook.Write(fs); fs.Close();
*************************************************************************************
2:創建一個空白的xlsx文件
step1:先導入所需要的dll文件
NPOI.dll
NPOI.OOXML.dll
NPOI.OpenXml4Net.dll
NPOI.OpenXmlFormats.dll
ICSharpCode.SharpZipLib.dll
step2:具體代碼實現
NPOI.XSSF.UserModel.XSSFWorkbook workbook = new NPOI.XSSF.UserModel.XSSFWorkbook(); workbook.CreateSheet("Sheet1"); FileStream fs = new FileStream("1.xlsx", FileMode.Create); workbook.Write(fs); fs.Close();
**********************************************************
3:自動識別xls和xlsx文件
NPOI的版本號之所以從1.2.5直接跳到2.0,很大原因是對Office 2007格式的支持,也正因為如此,使用NPOI 2.0會比以前的版本顯得稍微復雜些,因為NPOI同時提供了多個命名空間的庫,包括HSSF(Excel 2003), XSSF(Excel 2007), XWPF(Word 2007)。
為了能夠在讀取時自動識別Excel格式,而不是由你自己去判斷,NPOI提供了一個非常方便的類NPOI.SS.WorkbookFactory。
public class WorkbookFactory { public static IWorkbook Create(POIFSFileSystem fs){...} public static IWorkbook Create(OPCPackage pkg){...} public static IWorkbook Create(Stream inputStream){...} public static IFormulaEvaluator CreateFormulaEvaluator(IWorkbook workbook){...} }
這里先介紹下POIFSFileSystem和OPCPackage的區別,POIFSFileSystem即OLE2 格式(俗稱ActiveX文檔格式)的讀寫庫,OPCPackage即OOXML格式的讀寫庫,兩套庫分別用於Excel 2003和Excel 2007,當然由於是底層庫,他們不局限於讀取xls和xlsx格式,例如你可以用POIFSFileSystem讀取Thumb.db文件格式,具體可參考這里。
知道了POIFSFileSystem和OPCPackage的區別,你應該知道第一、第二個方法是干嘛的了吧,沒錯,這兩個是需要你自己主動判斷打開的文件是啥類型的,然后把讀到的文件系統傳給WorkbookFactory,它會自動根據文件系統的類型返回HSSFWorkbook或XSSFWorkbook,但因為這兩個類都實現了IWorkbook接口,所以大部分情況下你不需要去關心你到底在操作哪個類的實例,除非你用到了Excel 2007特有的一些功能時,才需要強類型轉換成XSSFWorkbook。
第三個方法則是今天要介紹的重點,它具有自動識別功能,只要你傳Stream對象進去,它就能知道你傳進去的到底是xls還是xlsx,然后返回相應的實例。
最后一個則是返回公式計算對象的,原理類似。HSSF和XSSF都有一個公式計算類,分別是HSSFFormulaEvaluator和XSSFFormulaEvaluator。
自動識別導入的xls和xlsx文件,代碼如下
FileStream fs = File.OpenRead("1.xlsx"); NPOI.SS.UserModel.IWorkbook workbook= NPOI.SS.UserModel.WorkbookFactory.Create(fs); MessageBox.Show(workbook.GetSheetAt(0).GetRow(0).GetCell(0).StringCellValue); fs.Close();