1. 程式人生 > >NPOI 2.0 教程(一):建立新EXCEL檔案

NPOI 2.0 教程(一):建立新EXCEL檔案

轉載請註明出處 http://blog.csdn.net/fujie724

NPOI很早就出名了,但是一直以為第三方的不可能有微軟的效率高,所以一直都用COM來處理EXCEL。

直到某天處理一個大量資料的EXCEL,發現NPOI生成的資料幾乎是1秒內就完成了,比傳統方法快了幾百倍。

驚喜萬分,開始學習NPOI的使用,也希望留下一些東西供別人學習。

今天帶來的是第一篇,用NPOI建立一個新的EXCEL檔案。

下載地址就不再贅述了。

如果只是簡單的處理的話,只需要引用下載壓縮包裡的

NPOI.dll 和 ICSharpCode.SharpZipLib.dll 

兩個檔案而已。

好了,開始。

第一步,引用空間

//轉載請註明出處 http://blog.csdn.net/fujie724
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;

第二步,建立工作簿(workbook)和sheet
HSSFWorkbook wk = new HSSFWorkbook();
//建立一個Sheet
ISheet sheet = wk.CreateSheet("例子");

第三步,建立行和單元格
//在第一行建立行
IRow row = sheet.CreateRow(0);
//在第一行的第一列建立單元格
ICell cell = row.CreateCell(0);

在NPOI裡,IRow和ICell是表格結構裡的基本元素,必須先通過Create函式建立後才能使用,不然會報錯。

  • 知識點
  • 因為在excel裡,在某個位置有沒有單元格,和單元格里有沒有值,這兩個是分開儲存的。“是否有單元格”也是需要儲存的資訊之一,也同樣佔用檔案大小。單元格是一個無形的容器,必須首先有容器,才能往裡頭存放值。
  • 曾經見過一個錯誤的例子,匯出的excel只有一行資料,但是檔案大小超過十幾MB。就是因為在匯出的時候,程式設計師沒有弄清楚單元格和值的區別,以為空單元格不佔大小,把65535行的所有格子都建立了,大量的空白行導致檔案很大。
  • 實際程式設計中請注意這一點,需要使用的行才建立,需要使用的單元格才建立。

接下來我們可以使用這個函式對單元格賦值。

cell.SetCellValue("測試");

值得注意的是,SetCellValue的過載中支援
  • bool
  • DateTime
  • double
  • string
  • IRichTextString

這幾種格式的引數,但是不像Excel COM一樣支援object。所以賦值的時候必須先做好型別轉換。

最後,將做好的這個EXCEL儲存到硬碟上。

//開啟一個xls檔案,如果沒有則自行建立,如果存在myxls.xls檔案則在建立時不要開啟該檔案
using (FileStream fs = File.OpenWrite("d:\\excel.xls"))
{
    wk.Write(fs);//向開啟的這個xls檔案中寫入並儲存。
}

這樣就完成了最基本的建立,寫入,儲存。

不需要釋放,不需要安裝EXCEL。速度極快,實在很方便。

請期待下一篇教程。

轉載請註明出處 http://blog.csdn.net/fujie724