Metodo de lectura del fichero
Código:
Aqui dejos los bean de Filas y CeldasMetodo que llama al de leer el fichero protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception{ ModelAndView mav = new ModelAndView("documentacionAnualidadListaExcelView"); // SpsiExpedienteBuscador buscadorSpsiExpediente = (SpsiExpedienteBuscador) request.getSession().getAttribute("buscadorSpsiExpediente"); Anualidad anualidad = new Anualidad(); File file = new File("C:/Documents and Settings/david.gomez/Escritorio/Libro1.xls"); leeArchivo(file, anualidad); mav.addObject("anualidad",anualidad); return mav; } @SuppressWarnings("unchecked") protected Vector leeArchivo(File file, Anualidad anualidad){ Vector informacionArchivo = new Vector(); 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); // buscadorSpsiExpediente.setFilas((Collection)hssfSheet.rowIterator()); Iterator it = hssfSheet.rowIterator(); while(it.hasNext()){ Filas fila = new Filas(); //Recorro datos de fila en fila HSSFRow hssfRow = (HSSFRow)it.next(); Vector informacionFila = new Vector(); //Me recorro todos los elementos de una fila for(short i = hssfRow.getFirstCellNum(); i < hssfRow.getLastCellNum(); i++){ HSSFCell hssfCell = hssfRow.getCell(i); //Si la celda es nula meter un blanco en la celda if(hssfCell == null){ informacionFila.add(""); } if(hssfCell != null){ Celdas celdaAux = null; switch(hssfCell.getCellType()){ case HSSFCell.CELL_TYPE_BLANK: informacionFila.add(""); break; case HSSFCell.CELL_TYPE_BOOLEAN: informacionFila.add(hssfCell.getBooleanCellValue()); celdaAux = new Celdas(i, String.valueOf(hssfCell.getBooleanCellValue())); break; case HSSFCell.CELL_TYPE_FORMULA: informacionFila.add(hssfCell.getNumericCellValue()); celdaAux = new Celdas(i, String.valueOf(hssfCell.getNumericCellValue())); break; case HSSFCell.CELL_TYPE_NUMERIC: informacionFila.add(hssfCell.getNumericCellValue()); celdaAux = new Celdas(i, String.valueOf(hssfCell.getNumericCellValue())); break; case HSSFCell.CELL_TYPE_STRING: informacionFila.add(hssfCell.getStringCellValue()); celdaAux = new Celdas(i, hssfCell.getStringCellValue()); break; default: break; } //Se añaden los valores de las celdas a la fila fila.getFilas().add(celdaAux); } } //Se añade la informacion de cada fila al archivio anualidad.getFilas().add(fila); informacionArchivo.add(informacionFila); } return informacionArchivo; }
Código:
Aqui dejo el codigo de la JSPpublic class Filas { private Collection<Celdas> filas; public Filas(){ this.filas = new ArrayList<Celdas>(0); } public Collection<Celdas> getFilas() { return filas; } public void setFilas(Collection<Celdas> filas) { this.filas = filas; } } public class Celdas { private short posicion; private String celdas; public Celdas(short posicion, String celdas){ this.posicion = posicion; this.celdas = celdas; } public String getCeldas() { return celdas; } public void setCeldas(String celdas) { this.celdas = celdas; } public short getPosicion() { return posicion; } public void setPosicion(short posicion) { this.posicion = posicion; } }
Código:
Aqui dejo el objeto que tiene como uno de sus atributos las filas del archivo<%@ include file="../comun/include.jsp" %> <%@ page import="es.mcu.iphe.sigi.util.*" %> <!-- Set the content type header with the JSP directive --> <%@ page contentType="application/vnd.ms-excel" %> <!-- Set the content disposition header --> <% response.setHeader("Content-Disposition", "attachment; filename=\"C:/Documents and Settings/xxx/Escritorio/Libro1.xls\""); %> <form:form commandName="anualidad"> <h2><fmt:message key="lit.bien.titulo"/> - Modificación del Excel</h2> <div class="bloque"> <table border="1" cellpadding="0" cellspacing="0" class="tblResultados" id="admUsuResultados"> <caption>Modificar Datos del Excel</caption> <c:out value="${filas}"/> <c:forEach var="fila" items="${anualidad.filas}"> <tr> <c:forEach var="celda" items="${fila}"> <td class="txto"> <c:out value="${celda.celdas}"/> </td> </c:forEach> </tr> </c:forEach> </table></br> <input type="submit" value="Modificar"/> </div> </form:form>
Código:
Y yo creo que no se me olvida nada de lo que estoy tocando a ver si alguien me pudiera ayudar a solucionarlo que esty enbuclao en el problema...Dejo unicamente los GET y SET del atributo en si que la clase es muy grande private ArrayList<Filas> filas = new ArrayList<Filas>(0); public ArrayList<Filas> getFilas() { return filas; } public void setFilas(ArrayList<Filas> filas) { this.filas = filas; }
Gracias