npoi 常用程式碼

在這裡記錄一些自己使用NPOI的時候常用到的程式碼。

備註:以下範例是用在 .xlsx 。
程式所引用的 NPOI 命名空間 要用 NPOI.XSSF 開頭。
如果要用在 .xls ,
程式所引用的 NPOI 命名空間 改用 NPOI.HSSF 開頭。
程式碼也會不一樣(例如:XSSFSheet -> HSSFSheet)。

取得第一個Sheet

1
XSSFSheet sheet = (XSSFSheet)workbook.GetSheetAt(0);

合併儲存格

1
2

sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 3, 0, 5));

建立第一行

1
IRow row = sheet.CreateRow(0);

建立第一個儲存格

1
ICell cell = row.CreateCell(0);

設定儲存格公式

1
2
//IF(XX,YY/XX,0) 此公式寫法可避免除以零的錯誤(Excel)
cell.CellFormula = "IF($H${1},SUM($H${0}:H{0})/$H${1},0)";

樣式相關

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
XSSFCellStyle style = (XSSFCellStyle)workbook.CreateCellStyle();
XSSFDataFormat dataFormat = (XSSFDataFormat )workbook.CreateDataFormat();

//將目前欄位的CellStyle設定為自動換行
style.WrapText = true;
//向中間對齊
style.VerticalAlignment = VerticalAlignment.Center;
//置左
style.Alignment = HorizontalAlignment.Left;
//設定儲存格背景顏色
style.FillForegroundXSSFColor = new XSSFColor(Color.FromArgb(217, 217, 217));
style.FillPattern = FillPattern.SolidForeground;
//設定儲存格框線
style.BorderLeft = BorderStyle.Thin;
style.BorderRight = BorderStyle.Thin;
style.BorderBottom = BorderStyle.Thin;
//斜線
style.BorderDiagonal = BorderDiagonal.Backward;
style.BorderDiagonalLineStyle = BorderStyle.Thin;
//小數點後兩位
style.DataFormat = dataFormat.GetFormat("0.00");
//千分位
style.DataFormat = dataFormat.GetFormat("#,##");

字型相關

1
2
3
4
5
6
7
8
9
10
IFont font = workbook.CreateFont();

//設定字型
font.FontName = "標楷體";
//設定字體大小
font.FontHeightInPoints = 14;
//設定字體為粗體
font.Boldweight = (short)FontBoldWeight.Bold;

style.SetFont(font);