2009年12月22日 星期二

NPOI 的儲存格自訂格式

最近在移植舊的寫法轉換成為 NPOI 的元件時,突然被一個問題卡了許久...

那就是 Excel 的儲存格格式。

雖然從 Tony Qu 大大的文章中得知了一些設定的必要條件,

文章中說明了當使用 Excel 內嵌的格式與 Excel 所支援的自訂格式設法,

當使用內嵌格式時只要使用 HSSFDataFormat.GetBuiltinFormat 將該格式產出即可,其方法如下所示:


HSSFCellStyle style = workbook.CreateCellStyle();
style.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00");


目前 POI 的文件中有提到目前內建支援的格式,詳情請點我

依上序的程式碼將會使用數字固定包含兩位小數點的格式顯示。

說了這麼多,還是沒有提到我的問題所在,詳細的問題請觀看下圖

[caption id="attachment_349" align="alignnone" width="615" caption="Excel 自訂格式設置"]Excel 自訂格式設置[/caption]

當我要給予數字格式為帶千分位與負數使用括弧表示時,一直沒有辦法使用,其寫法如下:


HSSFCellStyle style = workbook.CreateCellStyle();
HSSFDataFormat format = workbook.CreateDataFormat();
style.DataFormat = format.GetFormat("#,##0.00_);[紅色](#,##0.00)");


在使用這個方法,在Excel開啟時它告訴我無法找到相關的格式資料。

後來查到上述 POI 內建格式的文件時才發現,它的紅色是打英文的... @@

將「紅色」改為「Red」就可以了..

HSSFCellStyle style = workbook.CreateCellStyle();
HSSFDataFormat format = workbook.CreateDataFormat();
style.DataFormat = format.GetFormat("#,##0.00_);[Red](#,##0.00)");

沒有留言:

張貼留言