Java меняет содержимое ячейки вместо создания новых ячеек - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть список переменных в файле Excel, который я использую в качестве входных данных для онлайн-приложения и генерирую результат.Это происходит успешно, однако, когда я пытаюсь сохранить выходные данные в том же файле, добавив новый столбец и ячейки, исходное содержимое файла будет удалено.Я только хочу добавить информацию в тот же документ, но единственная опция, которую я нашел с помощью googling, - это создать другой файл.

, просто чтобы уточнить: Переменные для ввода и вместо простого добавленияинформация это происходит Измененный документ .

Как это исправить, не добавляя больше параметров и повторно добавляя информацию?

@Keyword
public void demoKey(String name) throws IOException{
    FileInputStream fis = new FileInputStream("C://Users/i2srsm/Desktop/New Microsoft Excel Worksheet.xlsx");
    XSSFWorkbook workbook = new XSSFWorkbook(fis);
    XSSFSheet sheet = workbook.getSheet("Data for full set");
    int columnNumber = sheet.getRow(0).getLastCellNum();
    int firstRow = sheet.getFirstRowNum();
    int lastRow = sheet.getLastRowNum();
    sheet.createRow(firstRow).createCell(columnNumber).setCellValue('Proposta');
    for (int rn=(firstRow); rn<=lastRow; rn++){
        Cell cell = sheet.createRow(rn).createCell(columnNumber+1)
        cell.setCellType(cell.CELL_TYPE_STRING);
        cell.setCellValue(name);
        FileOutputStream fos = new FileOutputStream("C://Users/i2srsm/Desktop/New Microsoft Excel Worksheet.xlsx");
        workbook.write(fos);
        fos.close();
    }
}

}

1 Ответ

0 голосов
/ 16 февраля 2019

не используйте sheet.createRow(row index) для обновления существующего файла Excel.этот создать новую строку.если вы хотите обновить существующую строку на листе, сначала получите связанную существующую строку, а затем создайте новую ячейку.

для получения существующей строки

Row row = sheet.getRow(row index);

для создания новой ячейки вышесуществующая строка

Cell cell = row.createCell(cell index);

попробуйте с этим

sheet.getRow(firstRow).createCell(columnNumber).setCellValue("Proposta");

for (int i=(firstRow+1); i<=lastRow; i++){
    Row row = sheet.getRow(i);
    Cell cell = row.createCell(columnNumber);
    cell.setCellType(cell.CELL_TYPE_STRING);
    cell.setCellValue(name);
}

FileOutputStream fos = new FileOutputStream("C:/Users/LifeStyle/Documents/output.xlsx");
workbook.write(fos);
fos.close();
...