Форматирование значения ячейки в apache poi как бухгалтерия или валюта для чисел

1

Код ниже - это код 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

вывод отображается в виде текста.

  • 0
    Не могли бы вы уточнить, хотите ли вы создать значение ячейки из String или из Integer? Я имею в виду, когда вы используете Integer.parseInt(value) , это value должно быть String, но в вашем коде у вас есть 500000 вместо "500000" .
  • 0
    в вашем примере 5 означает доллары, 00 = центы, 000 = 1/1000 или цент? Я правильно понимаю?
Теги:
apache-poi

1 ответ

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());
}

Если вы видите ######## в ячейке, это потому, что у вашего значения слишком много символов. Увеличьте ширину ячейки.

Я могу изменить выше код, если вы дадите некоторые рекомендации о том, как вы вводите свои данные. Удачи!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню