[C#][NPOI Library] 存取 Excel 檔案利器
Introduction
這陣子又在玩資料匯出 Excel 的功能,以前不是用 OLEDB 來處理,要不就是使用 COM 元件的方式來完成;
幸好有了 NPOI 的誕生,對於開發這類的 Lib 的人,獻上最崇高的敬意(泣)。
話不多說,來看中文教學與概述:http://msdn.microsoft.com/zh-tw/ee818993.aspx
目前 NPOI 的版本已經到 1.2.3 ,
可以到 這邊 下載
Examples
引用組件
引用命名空間
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 請善加利用
也許你可以完成這樣的效果
注意事項:
1、
請勿 new 出過多的 CellStyle 執行個體 (Ex:oStyle = (HSSFCellStyle)this.WorkBook.CreateCellStyle();)
,會造成 NPOI 元件出現不明運作。
如上圖,中間紅線為準,上下兩個區塊的 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
三小俠 小弟獻醜,歡迎指教