標籤:style http 使用 ar for sp 代碼 時間 bs
在Excel中我們經常要設定格式,比如說日期格式(yyyymmdd)、小數點格式(1.20)、貨幣格式($2000)、百分比格式(99.99%)等等,這些東西在過去我們恐怕只能在伺服器端產生好,不但增加了伺服器端的代碼量,還造成了不必要的字串替換操作,如今NPOI將讓伺服器從這種完全沒有必要的操作中解放出來,一切都將由Excel在用戶端處理。
使用NPOI時要注意,所有的格式都是通過CellStyle.DataFormat賦給儲存格的,而不是直接賦給儲存格。
案例一 日期格式
假設我們現在需要顯示的日期的格式為2008年5月5日,可以用下面的代碼產生:
HSSFSheet sheet = hssfworkbook.CreateSheet("new sheet");HSSFCell cell = sheet.CreateRow(0).CreateCell(0);cell.SetCellValue(new DateTime(2008,5,5));//set date formatHSSFCellStyle cellStyle = hssfworkbook.CreateCellStyle();HSSFDataFormat format = hssfworkbook.CreateDataFormat();cellStyle.DataFormat = format.GetFormat("yyyy年m月d日");cell.CellStyle=cellStyle;
由於這裡的“yyyy年m月d日”屬於自訂格式(區別於 Excel內嵌的格式),所以必須用hssfworkbook.CreateDataFormat()建立一個HSSFDataFormat執行個體,然後使用format.GetFormat來擷取相應的格式,只要是Excel支援的格式表示方式,這種方式都能夠實現。
案例二 保留2位小數
假設我們有個儲存格的值為1.2,怎麼顯示成1.20呢?在Excel中可以用“0.00”來表示,所以下面的代碼就能完成:
// Create a row and put some cells in it. Rows are 0 based.HSSFCell cell = sheet.CreateRow(0).CreateCell(0);//set value for the cellcell.SetCellValue(1.2);//number format with 2 digits after the decimal point - "1.20"HSSFCellStyle cellStyle = hssfworkbook.CreateCellStyle();cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00");cell.CellStyle = cellStyle;
這裡與上面有所不同,用的是HSSFDataFormat.GetBuiltinFormat()方法,之所以用這個,是因為0.00是Excel內嵌的格式,完整的Excel內嵌格式列表大家可以看這個視窗中的自訂欄表:
NPOI 格式設定2—時間,千分位,繁體,小數位