2014-03-30 46 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