17
Авг
2017

setDataFormat в SXSSF, Apache POI

Создал .xlsx файл, в который записываются данные большого объема с БД с помощью SXSSFWorkbook. Не получается форматирование текста в ячейках. Код такой:

SXSSFWorkbook workbook = new SXSSFWorkbook(100);
SXSSFSheet excelSheet = workbook.createSheet(file_name);

SXSSFCreationHelper creationHelper = (SXSSFCreationHelper) workbook.getCreationHelper();
//XSSFCellStyle style_for_numbers = (XSSFCellStyle) workbook.createCellStyle();
CellStyle style_for_numbers = workbook.createCellStyle();
style_for_numbers.setBorderBottom(BorderStyle.THIN);
style_for_numbers.setBorderLeft(BorderStyle.THIN);
style_for_numbers.setBorderRight(BorderStyle.THIN);
style_for_numbers.setBorderTop(BorderStyle.THIN);

//DataFormat format = workbook.createDataFormat();
//style_for_numbers.setDataFormat(format.getFormat("$#,##0.00"));
style_for_numbers.setDataFormat(creationHelper.createDataFormat().getFormat("#,##0.00"));

......
Statement st = connection.createStatement();
ResultSet rs = st.executeQuery(sqlQuery0);
......
while (rs.next()) {
SXSSFRow row1 = excelSheet.createRow(row_num);
for (int i = 1; i <= col_cnt; i++) {
SXSSFCell cell = row1.createCell(i-1);
cell.setCellValue(rs.getString(i) == null ? "" : rs.getString(i) );
cell.setCellStyle(style_for_numbers);
}
}

Границы ячеек отображаются, форматирование значений ячеек не происходит. Пробовал и с DataFormat и с SXSSFCreationHelper, менял SXSSF на XSSF, ничего не помогает. Здесь нашел нечто похожее: https://bz.apache.org/bugzilla/show_bug.cgi?id=54479, но у меня стиль ячеек создается за пределами цикла.... Помогите, пожалуйста, разобраться.

Источник: https://ru.stackoverflow.com/questions/707158/setdataformat-%D0%B2-sxssf-apache-poi

Share

Тебе может это понравится...