#java #apache-poi
#java #apache-poi
Вопрос:
Я пишу код для создания некоторого отчета. Я использую apache poi jars и java для чтения и записи данных в excels. У меня есть как входные, так и выходные данные (отчет превосходит). Теперь я могу правильно запустить первый запуск для вывода Excel с правильными данными. Теперь я хочу добавить новые данные в следующие два последовательных столбца, сохранив данные предыдущих строк и столбцов как есть. Кто-нибудь может помочь, как я могу добавить данные в столбцы, хранящие предыдущие данные в Excel на Java?` Спасибо
XSSFRow row = sheet.createRow(r);
row.createCell(0).setCellValue(data1);
row.createCell(1).setCellValue(data2);
row.createCell(2).setCellValue(data3);
row.createCell(3).setCellValue(data4);
row.createCell(4).setCellValue(data5);
r ;
FileOutputStream fileOut = new FileOutputStream(excelFileName);
wb.write(fileOut);
После первого запуска для каждого следующего запуска он должен добавлять только последние два значения столбца в Excel, сохраняя предыдущие данные.
Комментарии:
1.
if(row.getCell(0).getStringCellValue() != null) { ... }
?2. Как насчет того, чтобы создавать только нужные вам ячейки и не трогать существующие?
3. Узнайте, сколько строк на листе и сколько ячеек в каждой строке, затем добавьте новые строки и ячейки… Существуют такие методы, как
getPhysicalNumberOfRows
иgetPhysicalNumberOfCells
…4. @XtremeBaumer, как я уже сказал в своем отчете Excel, я должен печатать другие данные только один раз и последние два столбца результатов повторно.
5. @deHaar спасибо, не могли бы вы помочь мне с кодом для добавления? У меня всего 30 строк и 5 столбцов для первого запуска, т.Е. до E30, как указать условие для игнорирования этих данных E30?
Ответ №1:
Вы можете добавить данные к листу, который содержит неизвестное количество существующих столбцов, например
XSSFCell cell = row.createCell(row.getPhysicalNumberOfCells());
cell.setCellValue(dataN);
потому что метод сообщает вам, сколько ячеек уже есть в строке, что является первым индексом ячеек, которые не существуют.
Теперь ваша часть должна выяснить, как сделать это в цикле для более чем одной дополнительной ячейки подряд.
Если вы хотите добавить новые строки, то сделайте это следующим образом:
XSSFRow row = sheet.createRow(sheet.getPhysicalNumberOfRows());
Комментарии:
1. Спасибо, это полезно для получения следующей строки / столбца в Excel, теперь проблема в том, что я не получаю условие для игнорирования уже существующих данных для добавления новых данных
2. Ну, это может потребовать сравнения содержимого ячейки от
row.getCell(0)
доrow.getCell(row.getPhysicalNumberOfCells() - 1)
с данными, которые будут записаны…