2011-10-20 55 views
4

我使用Apache POI HSSF來從我的Java的Web App的Excel電子表格。在Apache的POI HSSF,細胞類型仍顯示爲「一般」的Excel,即使它的編號格式

我需要的格式爲「數」 2個小數點細胞。 (我在Java中值是BigDecimals的,但我可以將它們轉換爲雙打,沒問題。)我使用這個代碼:

CellStyle numericStyle = wb.createCellStyle(); 
numericStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("#,##0.00")); 

// output in this new style... 
row.createCell(cellnum).setCellValue(((BigDecimal)value).doubleValue()); 
row.getCell(cellnum).setCellStyle(numericStyle); 

的問題是,即使這個工程時,Excel仍顯示我的細胞一般。他們需要顯示爲號碼。因此,例如,0顯示爲0,但應爲0.00,如果格式正確(號碼),則會發生這種情況。

我看到它生成爲通用,因爲我可以右鍵單擊一個單元格,然後選擇「格式單元格」以查看它現在的狀態。

感謝您的任何幫助。它需要被Apache POI HSSF設置爲「Number」。任何意見讚賞。

+0

您確定這是內置格式的正確格式字符串嗎? – Gagravarr

+0

它根據此房源是正確的: http://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/BuiltinFormats.html 但是,如果你心裏有任何其他格式的字符串,請分享。 –

回答

0

回顧Apache POI API它看起來像你應該能夠指定單元格的類型。

... 
Cell cell = row.createCell(...); 
cell.setCellType(Cell.CELL_TYPE_NUMERIC); 
... 
0

我假設你還沒有找到你的問題的答案。

一兩個小數顯示數字的方法是設置一個單元格樣式。這允許您自定義小數位數和小數點分隔符等等。

protected CellStyle getCellStyle(HSSFWorkbook workbook) { 
    CellStyle cellStyle = workbook.createCellStyle(); 
    cellStyle.setDataFormat(
     workbook.getCreationHelper().createDataFormat().getFormat("#,##0.00")); 
     return cellStyle; 
} 

後來,當你填寫你的工作簿,在應用此cellStyle到所需的細胞:

CellStyle cellStyle = getCellStyle(); 
//... 
// create your cell 
cell.setCellStyle(cellStyle); 
// set the value 

它不會顯示在Excel中的數字類型。它顯示爲自定義類型。但在視覺上它應該是相同的,或者至少足夠接近。

相關問題