2014-03-30 44 views
0

我使用apache-poi来创建一些报告。我有一个小数点分隔符的问题。现在我有以下显示在Excel文件:Apache POI格式化Excel文件中的双数

为111.2343 - > 111.23

为111.23 - > 111.23

为111.2 - > 111.2

为111 - > 111。(见最后一点)

问题是与111号码。我不想看到后面的点(或逗号,取决于语言)。

这是我当前的格式化单元格的代码。这可以通过使用apache-poi来实现吗?

谢谢

尤利安

PS:有没有在POI使用java.text.Format子的方法吗?我看到这有DecimalFormat setDecimalSeparatorAlwaysShown方法,它做我想做的。

private void createColumnStyle(XSSFSheet sheet, int maxRows,int col) 
{ 
    XSSFWorkbook wb = sheet.getWorkbook(); 

    XSSFFont font = wb.createFont(); 
    font.setFontHeightInPoints((short)10); 
    font.setFontName("Calibri"); 

    XSSFCellStyle colStyle = wb.createCellStyle(); 
    colStyle.setFont(font);     
    colStyle.setAlignment(HorizontalAlignment.RIGHT); 

    colStyle.setBorderBottom(XSSFCellStyle.BORDER_THIN); 
    colStyle.setBorderTop(XSSFCellStyle.BORDER_THIN); 
    colStyle.setBorderRight(XSSFCellStyle.BORDER_THIN); 
    colStyle.setBorderLeft(XSSFCellStyle.BORDER_THIN); 

    CreationHelper createHelper = wb.getCreationHelper();     
    colStyle.setDataFormat(createHelper.createDataFormat().getFormat("#,##0.##")); 


    for (int i=3; i<maxRows; i++) 
    { 
     XSSFCell cell = sheet.getRow(i).createCell(col); 
     cell.setCellStyle(colStyle); 
    } 

} 
+0

如果您设置Excel来格式化单元格的显示方式,并在Apache POI中读取该格式,那么格式字符串是否会出色地保存以获取该格式? – Gagravarr

+0

@Gagravarr这种格式将是... :)? – INS

+0

我不知道,但这是一个完全不同的问题!一旦你知道如何在Excel中格式化它,将文件写出来,使用POI读取它,查看格式究竟是什么(Excel有时会在写入时转换格式字符串),最后让POI以该格式写入单元格样式 – Gagravarr

回答

0

使用DecimalFormat工作正常,所有的案件:

DecimalFormat dec = new DecimalFormat("#.00"); 
double cellValue = Double.valueOf(dec.format(111)); 
XSSFCell cell = sheet.createRow(0).createCell(0); 
cell.setCellValue(cellValue); 

此单元格的值设置为只111

+0

我想为整列设置**单元格样式**。单元格的值是数字,所以我对根据我的要求由excel解释的单元格样式感兴趣(请参阅问题)。 – INS