将apache poi中的cellvalue格式化为数字的会计或货币

时间:2014-07-23 07:11:59

标签: java apache apache-poi

以下代码是用于创建具有文本值的excel单元格的apache poi代码,希望文本值为货币。

代码:

    row1=   sheetNormal.createRow((short)2);
    row1.setHeight((short)(256 *1.5));
    header = row1.createCell((short)1);
    header.setCellValue(Integer.parseInt(500000));

excel中所需的输出:-5,00,000

输出以文本形式显示。

1 个答案:

答案 0 :(得分:2)

要获得货币输出,您可以执行以下操作。请注意,方法setStringValue(value)接受的值为double,但不是整数。您可以将其从String解析为Double,然后根据用于输入值的精度来操纵此值。这个精度可以是:

  • 全部美元;
  • 美分;
  • 1/1000分。

在下面的代码中,您可以找到所有三个示例(header已由cell1更改):

HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("test sheet");

HSSFCellStyle currencyStyle = wb.createCellStyle();
HSSFDataFormat dataFormat = wb.createDataFormat();
currencyStyle.setDataFormat(dataFormat.getFormat("$#,##0.00.000"));

HSSFRow row1 = sheet.createRow(2);
row1.setHeight((short) (256*1.5));

// Input in DOLLARS
HSSFCell cell1 = row1.createCell(1);
cell1.setCellStyle(currencyStyle);
cell1.setCellValue(Double.parseDouble("5")); // output $5,00,000

// Input in CENTS
HSSFCell cell2 = row1.createCell(2);
cell2.setCellStyle(currencyStyle);
cell2.setCellValue(Double.parseDouble("499") / 100); // output $4,99,000

// Input in 1/1000 OF A CENT
HSSFCell cell3 = row1.createCell(3);
cell3.setCellStyle(currencyStyle);
cell3.setCellValue(Double.parseDouble("123456789") / 100000); // output $1 234,56,789

try {
    FileOutputStream out = new FileOutputStream("currency_data_format.xls");
    wb.write(out);
    out.close();
} catch (IOException e) {
    System.out.println(e.getMessage());
}

如果您在单元格中看到 ######## ,那是因为您的值包含太多字符。 增加单元格宽度

如果您对如何输入数据有一定的准确性,我可以修改上面的代码。祝你好运!