Bueno a ver como planteo esto necesito que desde Java me guarde los cambios que hago en un archivo Excel, el archivo lo genero en una plantilla dentro de la aplicacion y haciendo las cajas editables como si fueran celdas de Excel y cuando pulso a "Guardar" que me guarde los cambios en el archivo Excel, y cuando abre ese archivo Excel vea los cambios. Os pongo el codigo que estoy empleando a ver si dais con la solucion porque yo estoy un poco desesperado.
Codigo de como saco la tabla que simula el excel en web
Código:
private void actualizaArchivo(File file, Anualidad anualidad) {
POIFSFileSystem poifsFileSystem = null;
try {
poifsFileSystem = new POIFSFileSystem(new FileInputStream(file));
}catch (FileNotFoundException ex) {
ex.printStackTrace();
}catch (IOException ex) {
ex.printStackTrace();
}
HSSFWorkbook hssfWorkbook = null;
try{
hssfWorkbook = new HSSFWorkbook(poifsFileSystem);
}catch (IOException ex) {
ex.printStackTrace();
}
HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(0);
Iterator it = hssfSheet.rowIterator();
Iterator<Filas> itFilas = anualidad.getFilas().iterator();
//Recorremos las filas del excel
Filas fila = itFilas.next(); //Recorremos las FILAS del excel que se va a generar con los cambios
while(it.hasNext() && itFilas.hasNext()){
HSSFRow hssfRow = (HSSFRow)it.next(); //Recorremos las filas del excel
Iterator<HSSFCell> itHssfCell = hssfRow.cellIterator(); //Recorremos las celdas del excel
Iterator<Celdas> itCeldas = fila.getFilas().iterator(); //Recorremos las CELDAS del excel que se va a generar con los cambios
//Recorremos las distintas celdas del excel
while(itHssfCell.hasNext() && itCeldas.hasNext()){
HSSFCell auxCelda = itHssfCell.next();
Celdas contCelda = itCeldas.next();
//Comprobamos cada uno de los valores que pueden venir en las celdas
switch(auxCelda.getCellType()){
case HSSFCell.CELL_TYPE_BLANK:
auxCelda.setCellValue("");
break;
case HSSFCell.CELL_TYPE_BOOLEAN:
auxCelda.setCellValue(String.valueOf(contCelda.getCeldas()));
break;
case HSSFCell.CELL_TYPE_FORMULA:
auxCelda.setCellValue(String.valueOf(contCelda.getCeldas()));
break;
case HSSFCell.CELL_TYPE_NUMERIC:
auxCelda.setCellValue(String.valueOf(contCelda.getCeldas()));
break;
case HSSFCell.CELL_TYPE_STRING:
auxCelda.setCellValue(contCelda.getCeldas());
break;
default: break;
}
//Se añaden los datos a las celdas
contCelda.setCeldas(contCelda.getCeldas());
//Se añaden las celdas a la fila
fila.setFilas(fila.getFilas());
}
}
//Se añade las filas al archivo
anualidad.setFilas(anualidad.getFilas());
}
Y luego este es el bean donde declaro las filas del excel
Código:
public abstract class BaseAnualidad extends AbstractBaseVO {
private Integer idAnualidad;
private ExpedienteSpsi expediente;
private Integer anualidad;
private String observaciones;
private Double fact_ene;
private Double fact_feb;
private Double fact_mar;
private Double fact_abr;
private Double fact_may;
private Double fact_jun;
private Double fact_jul;
private Double fact_ago;
private Double fact_sep;
private Double fact_oct;
private Double fact_nov;
private Double fact_dic;
private Double facturacion;
private Double comp_gasto;
private Double prev_inv;
private Double cant_retenida;
private Double rec_prop_pago;
private Double presupuesto;
private Double inversion;
private String audUser;
private Date audDate;
private byte[] archivoArchivoExcel;
private byte[] archivo;
private boolean archivoSubido;
private String nombreFichero;
private String rutaInforme;
private ArrayList<Filas> filas = new ArrayList<Filas>(0);
public ArrayList<Filas> getFilas() {
return filas;
}
public void setFilas(ArrayList<Filas> filas) {
this.filas = filas;
}
...
Muchas gracias y a ver si me podeis ayudar