powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Не работает setDataFormat в SXSSF, Apache POI
3 сообщений из 3, страница 1 из 1
Не работает setDataFormat в SXSSF, Apache POI
    #39506906
ArchiSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Создал .xlsx файл, в который записываются данные большого объема с БД с помощью SXSSFWorkbook. Записал до 4 млн строк в один файл (на 4 спредшита). Второй день бьюсь над проблемой форматирования текста в ячейках. Гуглил, все что находил, пробовал, не помогает. Код такой:

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, но у меня стиль ячеек создается за пределами цикла.... Вообщем уже и не знаю что пробовать.
...
Рейтинг: 0 / 0
Не работает setDataFormat в SXSSF, Apache POI
    #39506978
sanBez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArchiSQL,

Было уже здесь. Тип ячейки при создании надо указывать

тынц
...
Рейтинг: 0 / 0
Не работает setDataFormat в SXSSF, Apache POI
    #39507559
ArchiSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sanBezArchiSQL,

Было уже здесь. Тип ячейки при создании надо указывать

тынц

Спасибо, проблему решил парсингом данных (у меня это нули и числа с десятичным разделителем в виде точки). Вместо cell.setCellValue(rs.getString(i) == null ? "" : rs.getString(i) ); написал
cell.setCellValue(Double.parseDouble(rs.getString(i) == null ? "" : rs.getString(i)));
Форматирование сейчас проходит корректно.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Не работает setDataFormat в SXSSF, Apache POI
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]