java - para - apache poi maven
Edite archivos de Excel existentes usando jxl api/Apache POI (4)
Actualizo las fórmulas con otra pestaña para esto. Utilizo la siguiente oración
HSSFSheet worksheetse = workbook.getSheetAt(0);
worksheetse.setForceFormulaRecalculation(true);
pero es necesario que aplique el método setForceFormulaRecalculation para todas las pestañas que tienen las fórmulas.
Lo siento por mi ingles
Estoy interesado y me gustaría aprender más sobre Java, cómo escribir en las hojas de Excel existentes / manipular los datos existentes. Me preguntaba si podría darme una idea sobre cómo editar un archivo existente de Excel y guardarlo usando jxl api / Apache POI o tal vez darme un programa de ejemplo sobre cómo editar algunos datos en un archivo Excel existente y luego guardarlo Gracias por adelantado !!
Hola, tengo el mismo problema que neXGen. Pero, curiosamente, si abro el archivo con OpenOffice, ¡funciona!
Editar: quizás encontré una solución, pon esto después de cambiar los valores:
HSSFFormulaEvaluator.evaluateAllFormulaCells(workbook);
Los tutoriales here son muy útiles y están bien escritos. Usan un JAR externo desarrollado por el proyecto POI de Apache. Aquí hay un ejemplo simple de edición de una celda:
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();
Espero eso ayude
Un consejo muy importante que aprendí de la manera difícil. Abra OutputStream solo después de haber completado la escritura en su libro de Excel. El ejemplo de Zabbala es perfecto y lo muestra correctamente. Si abre el OutputStream más temprano, sus cambios no se escribirán en el archivo después de que se cierre el programa y se estaría rascando la cabeza como lo hice.