1、創建一個空白的xls和xlsx文件


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();


免責聲明!

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



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