Код ниже - это код apache poi для создания ячейки excel с текстовым значением, которое требует текстовое значение в качестве валюты.
Код:
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
вывод отображается в виде текста.
Чтобы получить выход в валюте, вы можете сделать что-то вроде этого. Будьте осторожны, метод 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());
}
Если вы видите ######## в ячейке, это потому, что у вашего значения слишком много символов. Увеличьте ширину ячейки.
Я могу изменить выше код, если вы дадите некоторые рекомендации о том, как вы вводите свои данные. Удачи!
Integer.parseInt(value)
, этоvalue
должно быть String, но в вашем коде у вас есть500000
вместо"500000"
.