Мне интересно и хотелось бы узнать больше о java, как писать в существующие листы excel/манипулировать существующими данными. Мне было интересно, можете ли вы дать мне представление о том, как редактировать существующий файл Excel и сохранять его с помощью jxl api/Apache POI или, возможно, дать мне пример программы по редактированию некоторых данных в существующем файле excel, а затем сохранить его Спасибо заранее!
Редактирование существующих файлов excel с использованием jxl api/Apache POI
Ответ 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);