Добавлять данные после каждого запуска кода в следующие два последовательных столбца в уже созданном Excel с помощью java

#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) с данными, которые будут записаны…