2011-10-20 21 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中的数字类型。它显示为自定义类型。但在视觉上它应该是相同的,或者至少足够接近。

相关问题