Estoy interesado y me gustaría obtener más información 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 de Excel existente y guardarlo usando la API jxl/Apache POI o tal vez me proporcione un programa de ejemplo sobre cómo editar algunos datos en un archivo existente de Excel y luego guardarlo es Gracias de antemano!Editar archivos de Excel existentes usando jxl api/Apache POI
Respuesta
Los tutoriales here son muy útiles y están bien escritos. Usan un JAR externo desarrollado por el proyecto POI de Apache. He aquí un ejemplo simple de una célula de edición:
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();
creo que sirve
Hola tengo el mismo problema que Nexgen. Pero, curiosamente, si abro el archivo con OpenOffice, ¡funciona!
Editar: tal vez he encontrado una solución, poner esto después de cambiar los valores:
HSSFFormulaEvaluator.evaluateAllFormulaCells(workbook);
que refrescar las fórmulas con otra ficha para este uso el siguiente frase
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 Inglés
Tenga en cuenta que 'HSSFFormulaEvaluator.evaluateAllFormulaCells (workbook);' puede no funcionar si la hoja de cálculo utiliza tipos específicos de funciones (con n argumentos, que no está implementado en poi). Sin embargo, 'worksheetse.setForceFormulaRecalculation (true);' parece funcionar en este caso. –
@VassilenDontchev Puede dar algunos ejemplos para mostrar en qué casos 'HSSFFormulaEvaluator.evaluateAllFormulaCells (workbook);' fallará – SpringLearner
Un consejo muy importante que he aprendido 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.
- 1. para obtener columnas de archivos de Excel usando Apache POI?
- 2. Lista desplegable de Excel usando Apache POI
- 3. Copiar hoja de Excel usando Apache POI
- 4. Agregar datos a un archivo de Excel usando jxl
- 5. ¿Cómo creo un nuevo archivo de Excel usando JXL?
- 6. JXL y Apache POI analizando Excel con objetos de imagen adjuntos
- 7. JXL y Timezone escribiendo un Excel
- 8. Cómo analizar caracteres UTF-8 en archivos de Excel usando POI
- 9. Comparación de rendimiento entre JXL y PDI para Excel generaciones de archivos
- 10. Lock sola columna en Excel usando Apache POI
- 11. Incrustar HSSF (excel) en HSLF (ppt) usando apache poi
- 12. Crear tabla de Excel utilizando Apache POI
- 13. Cómo sobrescribir archivos existentes usando Rubyzip lib
- 14. Apache POI, usando tanto XSSF como HSSF
- 15. Cómo crear una hoja de Excel con alineación de derecha a izquierda usando JXL
- 16. Inserte la imagen en el archivo de Excel usando JXL sin estirarla
- 17. Uso de plantillas de Excel con Apache POI
- 18. Cómo obtener más de 255 columnas en una hoja de Excel usando Apache POI 3.6
- 19. Formato de celda JXL
- 20. POI/Excel: aplicando fórmulas de una manera "relativa"
- 21. API para escribir enormes archivos de Excel usando java
- 22. Apache POI excepción de archivos xlsx lectura
- 23. Cómo mostrar y editar archivos PDF existentes en la aplicación de ios
- 24. Limitación al generar lista desplegable de Excel con Apache POI
- 25. Valor de ajuste de celdas de Excel en formato numérico usando POI
- 26. Copia de hojas de trabajo de Excel en POI
- 27. Agregando texto sobre archivos PDF existentes usando reportlab
- 28. Cómo agregar archivos existentes para proyectar usando Eclipse y PyDev
- 29. Apache POI Java Excel Rendimiento para hojas de cálculo grandes
- 30. Formato de moneda básico de Excel con Apache POI
¿En qué punto cierras FileInputStream? Si intenta leer desde que se cierra la secuencia de salida, ¿reflejará todos los cambios? Y, ¿no debería abrir FileOutputStream en el modo de adición? –
@eqbridges Como descubrí, InputStream está cerrado por defecto en el constructor. (Sé que su comentario tiene más de un año, pero puede ser que ayude a otros) –