以下代码是用于创建具有文本值的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
输出以文本形式显示。
答案 0 :(得分:2)
要获得货币输出,您可以执行以下操作。请注意,方法setStringValue(value)
接受的值为double
,但不是整数。您可以将其从String
解析为Double
,然后根据用于输入值的精度来操纵此值。这个精度可以是:
在下面的代码中,您可以找到所有三个示例(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());
}
如果您在单元格中看到 ######## ,那是因为您的值包含太多字符。 增加单元格宽度。
如果您对如何输入数据有一定的准确性,我可以修改上面的代码。祝你好运!