Подтвердить что ты не робот

Редактирование существующих файлов excel с использованием jxl api/Apache POI

Мне интересно и хотелось бы узнать больше о java, как писать в существующие листы excel/манипулировать существующими данными. Мне было интересно, можете ли вы дать мне представление о том, как редактировать существующий файл Excel и сохранять его с помощью jxl api/Apache POI или, возможно, дать мне пример программы по редактированию некоторых данных в существующем файле excel, а затем сохранить его Спасибо заранее!

4b9b3361

Ответ 1

Учебники здесь очень полезны и хорошо написаны. Они используют внешний JAR, разработанный проектом POI Apache. Вот простой пример редактирования одной ячейки:

    InputStream inp = new FileInputStream("wb.xls");
    Workbook wb = WorkbookFactory.create(inp);
    Sheet sheet = wb.getSheetAt([sheet index]);
    Row row = sheet.getRow([row index]);
    Cell cell = row.getCell([cell index]);
    String cellContents = cell.getStringCellValue(); 
    //Modify the cellContents here
    // Write the output to a file
    cell.setCellValue(cellContents); 
    FileOutputStream fileOut = new FileOutputStream("wb.xls");
    wb.write(fileOut);
    fileOut.close();

Надеюсь, что это поможет

Ответ 2

Один очень важный совет, который я усвоил. Откройте OutputStream только после того, как вы завершили запись в книгу Excel. Пример Zabbala находится на месте и показывает это правильно. Если вы откроете OutputStream раньше, ваши изменения не будут записаны в файл после выхода вашей программы, и вы будете царапать свою голову, как я.

Ответ 3

Я обновляю формулы с помощью другой вкладки. Для этого я использую следующее предложение

HSSFSheet worksheetse = workbook.getSheetAt(0);
worksheetse.setForceFormulaRecalculation(true); 

но вам необходимо применить метод setForceFormulaRecalculation для всех вкладок, которые имеют формулы.

Извините за мой английский

Ответ 4

Привет, у меня такая же проблема, как у neXGen. Но как ни странно, если я открываю файл с открытым офисом, он работает!

Изменить: возможно, я нашел решение, поставьте это после изменения значений:

HSSFFormulaEvaluator.evaluateAllFormulaCells(workbook);