http://horacerobot.blogspot.tw/2010/07/npoi-create-excel-advice.html
https://tw.saowen.com/a/49f2bd01681e7678ceab99d6deb4996d9e3179b96d7c0ff6e8a232cf3db209f3
基本Style,字型,字大小與框線等格式設定
假設我們最後想要設定的Excel有兩個Worksheet,其中第一個Worksheet看來如下:
NPOI可方便地建立多個Worksheet,當我們要建立多個工作底稿(Worksheet)時,可使用下列方式建立:
HSSFSheet sheetA = workbook.CreateSheet("飛機玩具");
HSSFSheet sheetB = workbook.CreateSheet("積木玩具");
HSSFSheet sheetB = workbook.CreateSheet("積木玩具");
在設定所有格式前,建議先建立字型相關的格式,以方便在該支產生Excel檔案程式稍後要套用到style時可使用到,用下列方式建立:
HSSFFont fontTitle = workbook.CreateFont();
fontTitle.FontName = "Arial";
fontTitle.FontHeightInPoints = 15;
fontTitle.Color = NPOI.HSSF.Util.HSSFColor.BLUE_GREY.index;
fontTitle.Boldweight = 30 * 20;
fontTitle.FontName = "Arial";
fontTitle.FontHeightInPoints = 15;
fontTitle.Color = NPOI.HSSF.Util.HSSFColor.BLUE_GREY.index;
fontTitle.Boldweight = 30 * 20;
建立一個名稱為styleTitle的儲存格Style參數,可由該參數設定許多屬性:
HSSFCellStyle styleTitle = workbook.CreateCellStyle();
設定Excel儲存格中的框線,當然也可設定點狀(DOTTED)或是粗框線(DOUBLE):
styleTitle.BorderBottom = CellBorderType.THIN;
styleTitle.BorderLeft = CellBorderType.THIN;
styleTitle.BorderTop = CellBorderType.THIN;
styleTitle.BorderRight = CellBorderType.THIN;
styleTitle.BorderLeft = CellBorderType.THIN;
styleTitle.BorderTop = CellBorderType.THIN;
styleTitle.BorderRight = CellBorderType.THIN;
設定Excel儲存格中資料水平與垂直的對齊方式:
styleTitle.Alignment = CellHorizontalAlignment.CENTER;
styleTitle.VerticalAlignment = CellVerticalAlignment.CENTER;
styleTitle.VerticalAlignment = CellVerticalAlignment.CENTER;
賦予style字型:
styleTitle.SetFont(fontTitle);
另外,我們可以為儲存格設定特殊格式,但首先需建立一個DataFormat參數:
HSSFDataFormat format = workbook.CreateDataFormat();
如何填值到Excel儲存格與套用格式
重點來了,NPOI的儲存格一般而言可存入4種通用格式,分別string、bool、double與datetime等4種格式.字串格式資料不用特別設定,只要使用
sheetA.CreateRow(2).CreateCell(1).SetCellValue("產品資訊")這樣即可.
sheetA.CreateRow(2).CreateCell(1).SetCellValue("產品資訊")這樣即可.
接著這裡示範三種常常會需要使用到的格式,分別是有逗號區分的數值資料,顯示百分比符號與顯示日期格式.
顯示有逗號區分的數值資料
HSSFCellStyle styleNumeric = workbook.CreateCellStyle();
styleNumeric.DataFormat = format.GetFormat("###,##0");
styleNumeric.DataFormat = format.GetFormat("###,##0");
程式中填入數值的資料時,需將「數值」的資料給予儲存格,而不是給予「字串」格式資料,如下列示範:
sheetA.CreateRow(3);
sheetA.GetRow(3).CreateCell(1).SetCellValue(35666888555);
sheetA.GetRow(3).GetCell(1).CellStyle = styleNumeric;
sheetA.GetRow(3).CreateCell(1).SetCellValue(35666888555);
sheetA.GetRow(3).GetCell(1).CellStyle = styleNumeric;
顯示百分比符號
HSSFCellStyle stylePercent = workbook.CreateCellStyle();
stylePercent.DataFormat = format.GetFormat("#0.00%");
stylePercent.DataFormat = format.GetFormat("#0.00%");
程式中填入百分比的資料時,需將「數值」的資料給予儲存格,而不是給予「字串」格式資料,如下列示範:
sheetA.CreateRow(4);
sheetA.GetRow(4).CreateCell(1).SetCellValue(0.38);
sheetA.GetRow(4).GetCell(1).CellStyle = stylePercent;
sheetA.GetRow(4).CreateCell(1).SetCellValue(0.38);
sheetA.GetRow(4).GetCell(1).CellStyle = stylePercent;
顯示日期格式
HSSFCellStyle styleDate = workbook.CreateCellStyle();
styleDate.DataFormat = format.GetFormat("yyyy-mm-dd");
styleDate.DataFormat = format.GetFormat("yyyy-mm-dd");
程式中填入日期格式的資料時,需將日期型態的資料給予儲存格,然後再將上述格是賦予給該儲存格,若是填入「字串」格式的日期資料,產生出來的Excel是不會呈現上面設定的「yyyy-mm-dd」日期格式.如下列示範:
sheetA.CreateRow(5);
sheetA.GetRow(5).CreateCell(1).SetCellValue(new DateTime(2010, 7, 12));
sheetA.GetRow(5).GetCell(1).CellStyle = styleDate;
sheetA.GetRow(5).CreateCell(1).SetCellValue(new DateTime(2010, 7, 12));
sheetA.GetRow(5).GetCell(1).CellStyle = styleDate;
我們也常需要對儲存格做合併,假如我們要合併儲存格A0:B0,並設定一個style參數給合併後的儲存格,需注意每個儲存格(如A0與B0)皆需設定style參數,否則不會有作用.如下設定:
sheetA.AddMergedRegion(new NPOI.HSSF.Util.Region(0, 0, 0, 1));
sheetA.GetRow(0).GetCell(0).CellStyle = styleTitle;
sheetA.GetRow(0).GetCell(1).CellStyle = styleTitle;
sheetA.GetRow(0).GetCell(0).CellStyle = styleTitle;
sheetA.GetRow(0).GetCell(1).CellStyle = styleTitle;
最後可經欄寬與列高放到最後再設定,這部份可參考前面所提到的文件:
//列高
sheetA.GetRow(0).Height = 19 * 20;//Excel上列高18.75
sheetA.GetRow(1).Height = 17 * 20;//Excel上列高16.5
//欄寬
sheetA.SetColumnWidth(0, 15 * 256);//Excel上欄寬14.29
sheetA.SetColumnWidth(1, 22 * 256);//Excel上欄寬21.29
sheetA.GetRow(0).Height = 19 * 20;//Excel上列高18.75
sheetA.GetRow(1).Height = 17 * 20;//Excel上列高16.5
//欄寬
sheetA.SetColumnWidth(0, 15 * 256);//Excel上欄寬14.29
sheetA.SetColumnWidth(1, 22 * 256);//Excel上欄寬21.29
NPOI文件資源連結
在下列網址可以查閱到相當豐富的各種NPOI屬性使用說明:
使用NPOI在網站上產生Excel表格資料,即時提供給user,不必再像之前要組很多XML字串,或是使用耗資源的Excel.Applicaton元件.NPOI更可方便的配合物件導向式的寫法,快速的產生豐富格式化後的Excel表格.
沒有留言:
張貼留言