|
|
|
Не работает setDataFormat в SXSSF, Apache POI
|
|||
|---|---|---|---|
|
#18+
Создал .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, но у меня стиль ячеек создается за пределами цикла.... Вообщем уже и не знаю что пробовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2017, 14:55 |
|
||
|
Не работает setDataFormat в SXSSF, Apache POI
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2017, 16:07 |
|
||
|
Не работает setDataFormat в SXSSF, Apache POI
|
|||
|---|---|---|---|
|
#18+
sanBezArchiSQL, Было уже здесь. Тип ячейки при создании надо указывать тынц Спасибо, проблему решил парсингом данных (у меня это нули и числа с десятичным разделителем в виде точки). Вместо cell.setCellValue(rs.getString(i) == null ? "" : rs.getString(i) ); написал cell.setCellValue(Double.parseDouble(rs.getString(i) == null ? "" : rs.getString(i))); Форматирование сейчас проходит корректно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2017, 14:37 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=61&tid=2122652]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
23ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 303ms |

| 0 / 0 |
