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

Excel con Jakarta's POI

Estas en el tema de Excel con Jakarta's POI en el foro de Java en Foros del Web. Hola amigos... Necesito de su ayuda, verán la situación en la siguiente... Tengo un libro de excel y dentro de este una hoja, entonces utilizando ...
  #1 (permalink)  
Antiguo 27/11/2011, 22:27
Avatar de douglasloza  
Fecha de Ingreso: abril-2008
Ubicación: Santa Tecla, El Salvador, El Salvador
Mensajes: 35
Antigüedad: 16 años, 8 meses
Puntos: 0
Excel con Jakarta's POI

Hola amigos...
Necesito de su ayuda, verán la situación en la siguiente...
Tengo un libro de excel y dentro de este una hoja, entonces utilizando JAKARTA'S POI con JAVA SE necesito ingresar un valor en una celda específica sin tener que alterar todo el contenido, pues es una hoja en la cual tengo unas formulas para crear unos gráficos, y ese gráfico depende de una celda en específico la cual el usuario puede modificar su valor, pero todo DESDE UNA APLICACION JAVA...
Esperando su pronta respuesta...
Att: Fernando Loza
  #2 (permalink)  
Antiguo 28/11/2011, 11:15
 
Fecha de Ingreso: mayo-2010
Mensajes: 99
Antigüedad: 14 años, 7 meses
Puntos: 5
Respuesta: Excel con Jakarta's POI

Wenas, yo usaria una plantilla creada en excel y las formulas que usas ponerlas dentro del mismo para graficar, lo demas en escribir en una hoja que sea de datos y la grafica en otra lo demas es historia.


Código PHP:

        POIFSFileSystem fs 
= new POIFSFileSystem(new FileInputStream(pathreal));
        
        
excel = new BaseExcel();
        
HSSFWorkbook libro = new HSSFWorkbook(fs);
        
HSSFCell cel null;
        
hoja libro.getSheetAt(0);
        
excel.setLibro(libro);
        
excel.setSheet(hoja);
        
        
hoja libro.getSheetAt(3);
        
excel.setLibro(libro);
        
excel.setSheet(hoja);
        for (
int i1;i<=3;i++){
        
excel.setCell(abc[1] + iform.getDatos());
        
        } 
Hope this helps, cheers.
  #3 (permalink)  
Antiguo 28/11/2011, 11:37
Avatar de douglasloza  
Fecha de Ingreso: abril-2008
Ubicación: Santa Tecla, El Salvador, El Salvador
Mensajes: 35
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Excel con Jakarta's POI

Hola! Gracias amigo!
Solo una pregunta, suponemos que con este codigo sobreescribiría en una celda específica en excel... pero y este fragmento:
excel = new BaseExcel();
que es? es una clase que yo tengo que crear??
Gracias! :)
  #4 (permalink)  
Antiguo 28/11/2011, 11:37
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 16 años, 3 meses
Puntos: 188
Respuesta: Excel con Jakarta's POI

Ya que se sabe que valor se envía desde java para la celda, tienes esta otra opción.

Recuperas el archivo ya creado.
Seteas el valor de la celda correspondiente al nuevo valor introducido.
Realizas los cálculos necesarios y modificas las celdas relacionadas.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #5 (permalink)  
Antiguo 28/11/2011, 11:38
Avatar de douglasloza  
Fecha de Ingreso: abril-2008
Ubicación: Santa Tecla, El Salvador, El Salvador
Mensajes: 35
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Excel con Jakarta's POI

Cita:
Iniciado por Fuzzylog Ver Mensaje
Ya que se sabe que valor se envía desde java para la celda, tienes esta otra opción.

Recuperas el archivo ya creado.
Seteas el valor de la celda correspondiente al nuevo valor introducido.
Realizas los cálculos necesarios y modificas las celdas relacionadas.
-----------------------------------------------------------------------------------------------------
Si exactemente eso estaba haciendo, pero el problema es que no setea la celda específica, o me setea todo o no me setea nada... :S ni idea de que puedo hacer :S
  #6 (permalink)  
Antiguo 28/11/2011, 11:40
Avatar de douglasloza  
Fecha de Ingreso: abril-2008
Ubicación: Santa Tecla, El Salvador, El Salvador
Mensajes: 35
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Excel con Jakarta's POI

para escribir el archivo utilizo
Código Javascript:
Ver original
  1. FileOutputStream escribir = new FileOutputStream("C:/archivo.xls");
  2.             impresion.write(escribir);
  3.             escribir.close();

si en el FileOutputStream("archivo.xls",true) <<-- se supone que ese TRUE me debe de sobreesccribir los datos, pero no logro nada :S
y si le pongo false, obviamente me sobreescribe todo el archivo, es decir lo borra y lo vuelve a crear...
  #7 (permalink)  
Antiguo 28/11/2011, 11:49
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 16 años, 3 meses
Puntos: 188
Respuesta: Excel con Jakarta's POI

Para alterar un archivo existente no se puede usar FileOutputStream porque ya se ha ejecutado la salida de datos. Es decir, el archivo existe. Lo que tienes es que crear un método que recupere ese archivo, obtenga la celda concreta, lo modifique y lo vuelva a guardar. Lo ideal sería guardarlo directamente nada más crearlo. No sé si POI permite esto.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #8 (permalink)  
Antiguo 28/11/2011, 12:13
Avatar de douglasloza  
Fecha de Ingreso: abril-2008
Ubicación: Santa Tecla, El Salvador, El Salvador
Mensajes: 35
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Excel con Jakarta's POI

Amigos... les comento que logré solucionar el problema :D wiiii xD
Código Javascript:
Ver original
  1. try {
  2.             InputStream inp = new FileInputStream("C:/facturas/indicador.xls");
  3.             //InputStream inp = new FileInputStream("workbook.xlsx");
  4.  
  5.             Workbook wb =  new HSSFWorkbook(inp);
  6.             Sheet sheet = wb.getSheetAt(0);
  7.             Row row = sheet.getRow(9);
  8.             Cell cell = row.getCell(2);
  9.             /*if (cell == null) {
  10.                 cell = row.createCell(3);
  11.             }*/
  12.             cell.setCellType(Cell.CELL_TYPE_STRING);
  13.             cell.setCellValue("1000");
  14.  
  15.             // Write the output to a file
  16.             FileOutputStream fileOut = new FileOutputStream("C:/facturas/indicador.xls");
  17.             wb.write(fileOut);
  18.             fileOut.close();
  19.         } catch (Exception ex) {
  20.             JOptionPane.showMessageDialog(rootPane, ex);
  21.         }


Es exactamente igual a escribir un fichero, solo que en lugar de darle por ejemplo createShet, le damos getSheetAt... y luego como ya hemos seleccionado la celda que queremos alterar, le samos un celda.setCellValue("VALOR DE LA CELDA");
Y eso es todo... Muchas Gracias a los que se tomaron la molestia :)
Infinitamente agradecido :)
  #9 (permalink)  
Antiguo 28/11/2011, 12:41
 
Fecha de Ingreso: mayo-2010
Mensajes: 99
Antigüedad: 14 años, 7 meses
Puntos: 5
Respuesta: Excel con Jakarta's POI

Wenas, me alegra que lo hayas solucionado, por ejemplo yo use en una app web , y no colocaba la ruta del archivo completa sino que lo usaba de la siguiente manera.

Código PHP:
    public void process(HttpServletRequest request,
        
HttpServletResponse responseReportBean rbeanthrows ServletExceptionIOException {
            try {
        
//response.setContentType("application/vnd.ms-excel");
        
HttpSession session request.getSession();
        
ServletContext context session.getServletContext();
        
String pathreal = (rbean.getModalidad().equals("0"))?context.getRealPath(EXCEL_FILE_MONTHLY):context.getRealPath(EXCEL_FILE_DAILY);
        
        
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(pathreal)); 
        
        
HSSFWorkbook hwb = new HSSFWorkbook(fs);
        
sheet =  hwb.getSheetAt(0);
        
setCell(CELL_TITLE,"Grafica"); 
lo demas es historia.
Cheers, hope this helps
  #10 (permalink)  
Antiguo 28/11/2011, 14:26
Avatar de douglasloza  
Fecha de Ingreso: abril-2008
Ubicación: Santa Tecla, El Salvador, El Salvador
Mensajes: 35
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Excel con Jakarta's POI

ooohh... siii es cierto.. jeje
tambien tenia esa pregunta, solo que la mia es una app de escritorio la cual estara alojada en un servidor linux /mint...
como puedo hacer para que por ejemplo guardar el fichero, como ponerle el path para que lo guarde en el escritorio del cliente??? y como instalo java en linux/mint con XAMPP??
Gracias :)
  #11 (permalink)  
Antiguo 28/11/2011, 14:34
Avatar de douglasloza  
Fecha de Ingreso: abril-2008
Ubicación: Santa Tecla, El Salvador, El Salvador
Mensajes: 35
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Excel con Jakarta's POI

mmm... ademas me encuentro con otro problema, al momento de cambiar el valor de la celda todo bien, pero no me actualiza las celdas que tienen formula... por ejemplo si la que actualizo es la celda A1; y en las celdas A2 esta la fomula A1*20, entonces no me actualiza la formula hasta que yo abro el excel, voy a la celda, le doy modificar y enter... que puede ser?? gracias :D
  #12 (permalink)  
Antiguo 28/11/2011, 15:00
Avatar de douglasloza  
Fecha de Ingreso: abril-2008
Ubicación: Santa Tecla, El Salvador, El Salvador
Mensajes: 35
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Excel con Jakarta's POI

uuu... aveces no se ni porque pregunto las cosas :S
Mil perdones a todos que les hago perder el tiempo xD
ya solventé lo de actualizar las formulas, siempre con el jakarta POI, utilizamos
Código C++:
Ver original
  1. HSSFFormulaEvaluator f = new HSSFFormulaEvaluator(wb);
  2. f.evaluateAllFormulaCells(libro);

Etiquetas: excel, jakarta'spoi, poi
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 00:50.