[C#][NPOI Library] 存取 Excel 檔案利器

  • 48073
  • 0
  • 2010-09-08

[C#][NPOI Library] 存取 Excel 檔案利器

Introduction

這陣子又在玩資料匯出 Excel 的功能,以前不是用 OLEDB 來處理,要不就是使用 COM 元件的方式來完成;

幸好有了 NPOI 的誕生,對於開發這類的 Lib 的人,獻上最崇高的敬意(泣)。

話不多說,來看中文教學與概述:http://msdn.microsoft.com/zh-tw/ee818993.aspx

目前 NPOI 的版本已經到 1.2.3 ,

可以到 這邊 下載

2010-09-07_171500

 

Examples

引用組件

2010-09-07_171906

 

引用命名空間

using NPOI.HSSF.UserModel;

 

 

 

一些基本應用

 

//建立工作表
this._WorkBook = new HSSFWorkbook();
//====================================

 //建立 Sheet
oHSSFSheet = (HSSFSheet)this.WorkBook.CreateSheet(SheetName);
//====================================

//建立列
oRow = (HSSFRow)oHSSFSheet.CreateRow(0);
//====================================

//建立儲存格
oHSSFCell = (HSSFCell)Row.CreateCell(ColNum);
//=======================================

//設定 Style
HSSFCellStyle oStyle = null;
oStyle = (HSSFCellStyle)this.WorkBook.CreateCellStyle();

//設定背景顏色
oStyle.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.BROWN.index;            
oStyle.FillPattern = NPOI.SS.UserModel.FillPatternType.SOLID_FOREGROUND;            
          
//設定儲存格框線
oStyle.BorderBottom = NPOI.SS.UserModel.CellBorderType.THIN;
oStyle.BorderLeft = NPOI.SS.UserModel.CellBorderType.THIN;
oStyle.BorderRight = NPOI.SS.UserModel.CellBorderType.THIN;
oStyle.BorderTop = NPOI.SS.UserModel.CellBorderType.THIN;
oStyle.BottomBorderColor = NPOI.HSSF.Util.HSSFColor.BLACK.index;
oStyle.LeftBorderColor = NPOI.HSSF.Util.HSSFColor.BLACK.index;
oStyle.RightBorderColor = NPOI.HSSF.Util.HSSFColor.BLACK.index;
oStyle.TopBorderColor = NPOI.HSSF.Util.HSSFColor.BLACK.index;

//設定文字調教
oStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.CENTER;
oStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.CENTER;

//設定
oHSSFCell.CellStyle = oStyle;
//============================================================

//設定儲存格寬度
 oHSSFSheet.SetColumnWidth(n1, 24 * 100);
//=====================================

//設定儲存格型別
ActCell.SetCellType(CellType.STRING);
ActCell.SetCellType(CellType.NUMERIC);
//============================================================

//設定儲存格的值
ActCell.SetCellValue("缺測");
ActCell.SetCellValue(0);
ActCell.SetCellValue(Convert.ToDouble(Value));
//===========================================

備註:下載回來的 Sample code 請善加利用

 

 

也許你可以完成這樣的效果

2010-09-07_174131

 

注意事項:

1、

請勿 new 出過多的 CellStyle 執行個體 (Ex:oStyle = (HSSFCellStyle)this.WorkBook.CreateCellStyle();)

,會造成 NPOI 元件出現不明運作。

     2010-09-07_175301

     如上圖,中間紅線為準,上下兩個區塊的 style 不同(框線、文字對齊)

    ,其實上下兩個區塊的 style 是設定一致的,那為什麼發現這樣的問題呢?

     當我在測試  NPOI 的時候,我不小心把每個儲存格的 style 都設定了兩次 XD

     觀看錯誤訊息,卻是 "超出範圍" (當然它不會是中文的,鬼才知道這是甚麼意思)

   ,所幸在我 review code 後,更改了程式碼,就 OK 了。

2、

一個 Sheet 的最多列數為 65536

一個 Sheet 的最多欄位數為 256

http://tw.myblog.yahoo.com/vincent-excel/article?mid=988&prev=989&l=a&fid=27

 

檔案下載:

Lib:NPOI 1.2.3 binary package.zip

Source Code : NPOI 1.2.3 source package.zip

Sample Code:NPOI.Examples 20100802 package.zip

HEMiDEMi 的標籤:,

三小俠  小弟獻醜,歡迎指教