Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] POI con java

Estas en el tema de POI con java en el foro de Java en Foros del Web. Hola amigos, tengo este problema. lo que necesito es cargar un excel con datos, sea de BD o de una interfaz eso es lo de ...
  #1 (permalink)  
Antiguo 27/04/2013, 06:33
 
Fecha de Ingreso: octubre-2010
Mensajes: 154
Antigüedad: 13 años, 6 meses
Puntos: 5
POI con java

Hola amigos, tengo este problema.
lo que necesito es cargar un excel con datos, sea de BD o de una interfaz eso es lo de menos.
el archivo excel que quiero cargar es un remito, y son pocos campos lo que tengo que cargar... y la unica manera que encontre es creando el REMITO entero desde excel, siendo que son pocos campos los que introduzco.

¿hay algun metodo con el que pueda agrirlo, cargarlo y guardarlo al excel?

porque con el
/**New Workbook * archivo excel*/
Workbook wb = new HSSFWorkbook();
FileOutputStream fileOut = new FileOutputStream("src/UIServices/Remitos/remito.xls");

para crearlo desde cero.

y con el
String fileName = "src/UIServices/Remitos/remito.xls";
/** Creo una instancia de FileInputStream */
FileInputStream fileInputStream = new FileInputStream(fileName);
/** Creo una instancia de POIFSFileSystem */
POIFSFileSystem fsFileSystem = new POIFSFileSystem(fileInputStream);

para leerlo, cosa que lo lee entero, claro con el resto del codigo, pero si pudiera hacer esos pasos... abrir uno existente (con todos los campos por defecto cargados), cargar solo los que necesito y guardarlo, me simplificaria muchisimo el tema.

gracias, y espero tener ayuda de alguien en el tema.
abrazo
  #2 (permalink)  
Antiguo 29/04/2013, 09:45
 
Fecha de Ingreso: octubre-2010
Mensajes: 154
Antigüedad: 13 años, 6 meses
Puntos: 5
Respuesta: POI con java

alguien me puede decir como hacer para pintar las lineas de la planilla?
saludos.
  #3 (permalink)  
Antiguo 04/05/2013, 05:00
 
Fecha de Ingreso: octubre-2010
Mensajes: 154
Antigüedad: 13 años, 6 meses
Puntos: 5
Respuesta: POI con java

solucionado gracias.
  #4 (permalink)  
Antiguo 06/05/2013, 06:45
Avatar de el_java  
Fecha de Ingreso: enero-2008
Mensajes: 185
Antigüedad: 16 años, 3 meses
Puntos: 3
Respuesta: POI con java

cual es la idea de colocar "solucionado", sin colocar el cómo se hizo??

pfff
__________________
La Mejor banda de Rock Chileno : Los Bunkers
  #5 (permalink)  
Antiguo 07/05/2013, 05:05
 
Fecha de Ingreso: octubre-2010
Mensajes: 154
Antigüedad: 13 años, 6 meses
Puntos: 5
Respuesta: POI con java

para que voy a colocar la solucion si nadie demostro interes en prestar ayuda o interes en el tema. Y para que nadi pierda tiempo buscando alguna.
te interesa la solucion?? avisame y paso el codigo.
saludos.
  #6 (permalink)  
Antiguo 07/05/2013, 10:12
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: POI con java

Porque según tu forma de ver las cosas sólo se ayuda si te han ayudado antes.

Al leer tu contestación, para la siguiente seguramente yo no te ayude, porque parece que ayudar a los demás solo lo haces si recibes algo a cambio.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #7 (permalink)  
Antiguo 07/05/2013, 10:54
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: POI con java

Yo espero que entienda que no estamos obligados a responder a todos los usuarios. Este es un foro de gente para gente, a veces das a veces recibes, inicialmente preguntaba muchas cosas, ahora apenas pregunto y la mayor parte respondo.

Y muchas, muchísimas de mis preguntas han quedado sin respuesta. Algunas las he podido responder yo mismo y hasta he dado la solución aplicada. Otras las he ido puenteando como pude. Pero el conocimiento no debe ser exclusivista. Cuantas horas de trabajo me habría ahorrado si alguien hubiese puesto una mísera explicación al tipo de problema que tenía en un foro... Pero es lo que hay.

Con mi memoria de pez lo más seguro es que si vuelve a preguntar algo sí le responda porque ni me acordaré quien fue el que puso ese nefasto mensaje.

Además he leido varias veces las dos primeras preguntas y no he entendido que es lo que necesitaba realmente. Parece que hablamos idiomas diferentes.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}

Última edición por Fuzzylog; 07/05/2013 a las 11:17
  #8 (permalink)  
Antiguo 08/05/2013, 05:25
 
Fecha de Ingreso: octubre-2010
Mensajes: 154
Antigüedad: 13 años, 6 meses
Puntos: 5
Respuesta: POI con java

sabes porque no publico la respuesta, porque es una clase de 580 lineas que m quedo... vos te vas a poner a leer una clase de tantas lineas????
tuve que dibujar el excel entero, porque no encontre como hacer lo que queria hacer en un principio.
yo entiendo que no voy a tener respuestas a todo lo que busco, es mas, creo que de todas las dudas que plantie, tuve solo respustas de algunas, la minoria... No espero que aca me solucionen la vida.... de este foro solo veo si encuentro alguien con mis mismas inquietudes y que las haya pasado...

lo de "solucionado" lo puse por si alguien estaba interesado en saber la solucion, se la pasaba por algun medio (e-mail por ej.) poruqe no da postear la clase entera que me llevo diburar el excel.

no me interesa generar comflicto ni polemica... yo en este hilo no comento mas... por si esperan respuestas al respecto.

saludos
  #9 (permalink)  
Antiguo 08/05/2013, 05:26
 
Fecha de Ingreso: octubre-2010
Mensajes: 154
Antigüedad: 13 años, 6 meses
Puntos: 5
Respuesta: POI con java

Cita:
Iniciado por Xerelo Ver Mensaje
Porque según tu forma de ver las cosas sólo se ayuda si te han ayudado antes.

Al leer tu contestación, para la siguiente seguramente yo no te ayude, porque parece que ayudar a los demás solo lo haces si recibes algo a cambio.
disculpame si te molesto mi comentario, pero yo al no saber tanto, no estoy en condiciones de poder ayudar como quisiera.
por eso tengo mas pregutnas que soluciones.
abrazo.
  #10 (permalink)  
Antiguo 08/05/2013, 05:42
 
Fecha de Ingreso: octubre-2010
Mensajes: 154
Antigüedad: 13 años, 6 meses
Puntos: 5
Respuesta: POI con java

como puedo hacer para colgar la clase en este hilo? no tengo ningun drama en mostrar como lo hice.
  #11 (permalink)  
Antiguo 08/05/2013, 05:49
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: POI con java

Bueno, caso tipico seria añadirlo en pastebin y poner el enlace.

Pero es que no hace falta que pongas toda la clase. Sólo el punto donde tenias el problema y la solucion que le has dado. Es raro que yo ponga toda una clase completa en algún mensaje, suelo dar partes de código.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #12 (permalink)  
Antiguo 08/05/2013, 06:50
 
Fecha de Ingreso: octubre-2010
Mensajes: 154
Antigüedad: 13 años, 6 meses
Puntos: 5
Respuesta: POI con java

pasa que la clase entera es para dibujar el excel.
el excel es para un remito de envio de mercaderia...

lo que dibujo son las lineas, esquinas, estilos de letras, etc.

paso parte del codigo donde creo que es lo mas importante.

Código Javascript:
Ver original
  1. public class GenerarExcel {
  2.  
  3.     /*creo los atributos*/
  4.     HSSFWorkbook archivo = new HSSFWorkbook();
  5.     String ruta = "c://service/";
  6.     FileOutputStream fileOut;
  7.     Vector<Integer> listID;
  8.     HSSFCellStyle cs, csTitulo, csCentrado,  
  9.             csLGSup, csLGInf,
  10.             csLGDer, csLGIzq,
  11.             csLSup, csLInf, csLDer, csLIzq, csNegrita,
  12.             csTopIzq, csTopDer, csBottomDer, csBottomIzq;
  13.     Font fNegrita, fuente, fNTitulo;
  14.    
  15.     HSSFSheet hoja1;
  16.     HSSFRow remito;
  17.     String fecha;
  18.    
  19.     public GenerarExcel(Vector<Integer> listIDDatServ) throws IOException {
  20.         try {      
  21.             this.listID = listIDDatServ;
  22.         /* Carga los datos del excel de la ruta especificada* */
  23.             archivo = new HSSFWorkbook();
  24.             //tomo la primera hoja del archivo
  25.             hoja1 = archivo.createSheet("Hoja1");
  26.                 //seteo la hoja en tamaño A4 horizontal
  27.             hoja1.getPrintSetup().setLandscape(false);
  28.             hoja1.getPrintSetup().setPaperSize(HSSFPrintSetup.A4_PAPERSIZE);
  29.            
  30.             /** CARGO FILAS Y MARCOS DEL REMITO * */
  31.             this.creoFilas ();
  32.            
  33.             /**Creo los estilos a:*/
  34.             this.creoEstilos();
  35.             this.setMargen();
  36.            /** CARGO CAMPOS FIJOS DEL REMITO * */
  37.             this.camposFijos();
  38.             /** CARGO CAMPOS VARIABLES DEL REMITO * */
  39.             this.camposVariables();
  40.             /** CARGO MARCOS DEL REMITO * */
  41.             this.creoMarcos();     
  42.            
  43.             fileOut = new FileOutputStream(ruta);
  44.             archivo.write(fileOut);
  45.             fileOut.close();
  46.  
  47.         } catch (FileNotFoundException ex) {
  48.             JFrame frame = new JFrame();
  49.             JOptionPane.showMessageDialog(frame,
  50.                     "No se encontró el archivo \n" +
  51.                     "o el archivo ya se encuentra abierto.        ",
  52.                     "Error",
  53.                     JOptionPane.WARNING_MESSAGE);
  54.         } catch (IOException ex) {
  55.             JFrame frame = new JFrame();
  56.             JOptionPane.showMessageDialog(frame,
  57.                     "Error en la carga de datos.        ",
  58.                     "Error",
  59.                     JOptionPane.WARNING_MESSAGE);
  60.         }catch (Exception ex) {
  61.             JFrame frame = new JFrame();
  62.             JOptionPane.showMessageDialog(frame,
  63.                     "Se produjo un error y la APP se cerrará.        ",
  64.                     "Error",
  65.                     JOptionPane.WARNING_MESSAGE);
  66.         }
  67.     }
Código CreoFilas:
Ver original
  1. public void creoFilas (){
  2.         /**
  3.          * ANCHO COLUMNAS
  4.          * */
  5.         int i = hoja1.getColumnWidth(1);
  6.         //setColumnWidth(column, width);
  7.         hoja1.setColumnWidth(0, i/2); //col 0
  8.         hoja1.setColumnWidth(2, i/2); //col 10
  9.         hoja1.setColumnWidth(3, i*2); //col 10
  10.         hoja1.setColumnWidth(5, i/4); //col 4
  11.         hoja1.setColumnWidth(6, i/5); //col 5
  12. //      hoja1.setColumnWidth(7, i/2); //col 6
  13.         hoja1.setColumnWidth(11, i/2); //col 10
  14.        
  15. //      archivo.set
  16.         /**
  17.          * CREO FILAS
  18.          * */
  19.         Row r;
  20.         int y;
  21.         for (int f = 0; f<=64; f++){
  22.             hoja1.createRow(f);
  23.             for (int g = 0; g<=12; g++){
  24.                 hoja1.getRow(f).createCell(g);
  25.             }
  26.         }          
  27.     }
Código creoMarcos:
Ver original
  1. public void creoMarcos(){
  2.  
  3.         /**
  4.          * AGREGO MARCOS Y LINEAS
  5.          * */
  6.         int x, y, z;
  7.         x = 0; y = 12; z = 2;
  8.        
  9.         hoja1.getRow(0).getCell(0).setCellStyle(csTopIzq);
  10.         for (int i = 1; i<y; i++){
  11.             hoja1.getRow(0).getCell(i).setCellStyle(csLGSup);
  12.         }
  13.         hoja1.getRow(0).getCell(y).setCellStyle(csTopDer);
  14.         hoja1.getRow(0).getCell(6).setCellStyle(csTopIzq);
  15.        
  16.         Row f;
  17.         for (int i = 1; i<=8; i++){
  18.             f = hoja1.getRow(i);
  19.             f.getCell(x).setCellStyle(csLGIzq);
  20.             f.getCell(y).setCellStyle(csLGDer);
  21.         }
  22.        
  23.         hoja1.getRow(1).getCell(5).setCellStyle(csTopIzq);
  24.         hoja1.getRow(2).getCell(5).setCellStyle(csLGSup);
  25.         hoja1.getRow(1).getCell(6).setCellStyle(csTopDer);
  26.         hoja1.getRow(2).getCell(6).setCellStyle(csTopIzq);
  27.         hoja1.getRow(1).getCell(7).setCellStyle(csLGIzq);
  28.         for (int i = 3; i<=9; i++){
  29.             f = hoja1.getRow(i);
  30.             f.getCell(6).setCellStyle(csLGIzq);        
  31.         }
  32.  
  33.         hoja1.getRow(9).getCell(x).setCellStyle(csBottomIzq);
  34.         for (int i = 1; i<y; i++){
  35.             hoja1.getRow(9).getCell(i).setCellStyle(csLGInf);
  36.         }
  37.         hoja1.getRow(9).getCell(y).setCellStyle(csBottomDer);
  38.         hoja1.getRow(9).getCell(5).setCellStyle(csBottomDer);
  39.        
  40.         for (int i = 10; i<14; i++){
  41.             f = hoja1.getRow(i);
  42.             f.getCell(x).setCellStyle(csLGIzq);
  43.             f.getCell(y).setCellStyle(csLGDer);
  44.         }
  45.         hoja1.getRow(14).getCell(x).setCellStyle(csBottomIzq);
  46.         hoja1.getRow(14).getCell(y).setCellStyle(csBottomDer);
  47.  
  48.         for (int i = 1; i<y; i++){
  49.             hoja1.getRow(14).getCell(i).setCellStyle(csLGInf);
  50.         }      
  51.        
  52.         for (int i = 15; i<=18; i++){
  53.             f = hoja1.getRow(i);
  54.             f.getCell(x).setCellStyle(csLGIzq);
  55.             f.getCell(y).setCellStyle(csLGDer);
  56.         }
  57.        
  58.         hoja1.getRow(18).getCell(x).setCellStyle(csBottomIzq);
  59.         for (int i = 1; i<y; i++){
  60.             hoja1.getRow(18).getCell(i).setCellStyle(csLGInf);
  61.         }
  62.         hoja1.getRow(18).getCell(y).setCellStyle(csBottomDer);
  63.        
  64.         hoja1.getRow(19).getCell(x).setCellStyle(csLGIzq);
  65.         hoja1.getRow(19).getCell(y).setCellStyle(csLGDer);
  66.        
  67.         hoja1.getRow(20).getCell(x).setCellStyle(csBottomIzq);
  68.         hoja1.getRow(20).getCell(y).setCellStyle(csBottomDer);
  69.         for (int i = 1; i<y; i++){
  70.             hoja1.getRow(20).getCell(i).setCellStyle(csLGInf);
  71.         }      
  72.        
  73.         for (int i = 21; i<=53; i++){
  74.             f = hoja1.getRow(i);
  75.             hoja1.getRow(i).getCell(x).setCellStyle(csLGIzq);
  76.             hoja1.getRow(i).getCell(2).setCellStyle(csLGIzq);
  77.             hoja1.getRow(i).getCell(y).setCellStyle(csLGDer);
  78.         }
  79.        
  80.         f = hoja1.getRow(54);
  81.         for (int i = 1; i<y; i++){
  82.             f.getCell(i).setCellStyle(csLGInf);
  83.         }
  84.         f.getCell(2).setCellStyle(csBottomIzq);
  85.         f.getCell(x).setCellStyle(csBottomIzq);
  86.         f.getCell(y).setCellStyle(csBottomDer);
  87.  
  88.         f = hoja1.getRow(61);
  89.         f.getCell(x).setCellStyle(csLGInf);
  90.         f.getCell(x+1).setCellStyle(csLGInf);
  91.         f.getCell(x+2).setCellStyle(csLGInf);
  92.         f.getCell(x+3).setCellStyle(csLGInf);
  93.        
  94.         f.getCell(y-3).setCellStyle(csLGInf);
  95.         f.getCell(y-2).setCellStyle(csLGInf);
  96.         f.getCell(y-1).setCellStyle(csLGInf);
  97.         f.getCell(y).setCellStyle(csLGInf);
  98.        
  99.     }
Código creoEstilos:
Ver original
  1. public void creoEstilos(){
  2.         /*Creo los estilos a: */
  3.         csCentrado = archivo.createCellStyle();
  4.         csLSup = archivo.createCellStyle();
  5.         csLInf = archivo.createCellStyle();
  6.         csLDer = archivo.createCellStyle();
  7.         csLIzq = archivo.createCellStyle();
  8.         csLGDer = archivo.createCellStyle(); csLGIzq = archivo.createCellStyle();
  9.         csLGSup = archivo.createCellStyle(); csLGInf  = archivo.createCellStyle();
  10.        
  11.         csCentrado.setAlignment(CellStyle.ALIGN_CENTER);
  12.        
  13.         //font size 10
  14.           fuente = archivo.createFont();
  15.           fuente.setFontHeightInPoints((short) 10);
  16.          
  17.           fNTitulo = archivo.createFont();
  18.           fNTitulo.setFontHeightInPoints((short) 15);
  19. //        fNTitulo.setFont(HSSFFont.FONT_ARIAL); //Tipo ARIAL
  20.           fNTitulo.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); //Negrita
  21.          
  22.           //Simple style
  23.           cs = archivo.createCellStyle();
  24.           cs.setFont(fuente);
  25.          
  26.           csTitulo = archivo.createCellStyle();
  27.           csTitulo.setFont(fNTitulo);
  28.          
  29.          
  30.         //NEGRITA
  31.         csNegrita = archivo.createCellStyle();
  32.         fNegrita = archivo.createFont();
  33.         fNegrita.setFontName(HSSFFont.FONT_ARIAL); //Tipo ARIAL
  34.         fNegrita.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); //Negrita
  35.         fNegrita.setFontHeightInPoints((short)10); //tamaño 10     
  36.         csNegrita.setFont(fNegrita);
  37.        
  38.         //BORDES    //SUPERIOR
  39.         csLGSup.setBorderTop(HSSFCellStyle.BORDER_MEDIUM);
  40.                     //INFERIOR
  41.         csLGInf.setBorderBottom(HSSFCellStyle.BORDER_MEDIUM);
  42.                     //DERECHA
  43.         csLGDer.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);
  44.                     //DERECHA SUPERIOR
  45.         csTopDer = archivo.createCellStyle();
  46.         csTopDer.setBorderTop(CellStyle.BORDER_MEDIUM);
  47.         csTopDer.setTopBorderColor(IndexedColors.BLACK.getIndex());
  48.         csTopDer.setBorderRight(CellStyle.BORDER_MEDIUM);
  49.         csTopDer.setRightBorderColor(IndexedColors.BLACK.getIndex());
  50.         csTopDer.setFont(fuente);
  51.                     //DERECHA INFERIOR
  52.         csBottomDer = archivo.createCellStyle();
  53.         csBottomDer.setBorderBottom(CellStyle.BORDER_MEDIUM);
  54.         csBottomDer.setBottomBorderColor(IndexedColors.BLACK.getIndex());
  55.         csBottomDer.setBorderRight(CellStyle.BORDER_MEDIUM);
  56.         csBottomDer.setRightBorderColor(IndexedColors.BLACK.getIndex());
  57.         csBottomDer.setFont(fuente);
  58.                     //IZQUIERDA
  59.         csLGIzq.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);
  60.                     //IZQUIERDA SUPERIOR
  61.         csTopIzq = archivo.createCellStyle();
  62.         csTopIzq.setBorderTop(CellStyle.BORDER_MEDIUM);
  63.         csTopIzq.setTopBorderColor(IndexedColors.BLACK.getIndex());
  64.         csTopIzq.setBorderLeft(CellStyle.BORDER_MEDIUM);
  65.         csTopIzq.setLeftBorderColor(IndexedColors.BLACK.getIndex());
  66.         csTopIzq.setFont(fuente);
  67.                     //IZQUIERDA INFERIOR
  68.         csBottomIzq = archivo.createCellStyle();
  69.         csBottomIzq.setBorderBottom(CellStyle.BORDER_MEDIUM);
  70.         csBottomIzq.setBottomBorderColor(IndexedColors.BLACK.getIndex());
  71.         csBottomIzq.setBorderLeft(CellStyle.BORDER_MEDIUM);
  72.         csBottomIzq.setLeftBorderColor(IndexedColors.BLACK.getIndex());
  73.         csBottomIzq.setFont(fuente);
  74.     }
estas son para dibujar el contorno del remito, esquinas e interlineado.
el lo que falta es lo que cargo las celdas con datos de la base de datos, que no es mas que
Código cargar una celda:
Ver original
  1. hoja1.getRow(numFila).getCell(numCelda).setCellValue("Valor a cargar en la celda");
  2.         hoja1.getRow(numFila).getCell(numCelda).setCellStyle(estilo a asignar a dicha celda);

saludos.

Etiquetas: metodo, poi, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:00.