Foro de elhacker.net

Programación => Java => Mensaje iniciado por: turion en 30 Agosto 2014, 05:03 am



Título: Manejo de excel con java.
Publicado por: turion en 30 Agosto 2014, 05:03 am
Buenas noches.

Como sabeis los que me conoceis intento no preguntar en el foro a menos que se me agoten las ideas jeje y una vez más es así.

Vamos con el problema, estoy haciendo un programa que me inserta distintas variables en un archivo xls, hasta aqui todo bien. Lo que no consigo es poder guardar más de una vez en el mismo excel. Os adjunto los métodos por si podeis ayudar.

Código:
public static void crearexcel()
    {
       
        try
        {
     //Se crea el libro Excel
            String operador =(" damian");
            WritableWorkbook workbook =Workbook.createWorkbook(new File(dire+operador+".xls"));
            //Workbook workbook =Workbook.getWorkbook(new File(dire));
            //Se crea una nueva hoja dentro del libro
            WritableSheet sheet =
                    workbook.createSheet("Parte Operador", 0);
           }
        catch (IOException ex)
        {
            System.out.println("Error al crear el fichero.");
        }
    }


Citar
public static void escribirExcel()
    {
        try
        {
         
           
           
            int i=0;
            Cell cell = sheet.getCell(0,i);
            boolean encontrado= true;
             //System.out.println(cell.getContents());
            while (encontrado)
            {
                if(cell.getType() == CellType.DATE)
                {
            System.out.println("warra"+ i);
            i++;}
                else encontrado = false;
            }
           
            sheet.addCell(new jxl.write.Number(1, i, 1.2));
            sheet.addCell(new jxl.write.Number(2, i, 732));
            sheet.addCell(new jxl.write.Label(3,i,555)"));
           
            //Creamos una celda de tipo fecha y la mostramos
            //indicando un patón de formato
            DateFormat customDateFormat =
                    new DateFormat ("d/m/yy");
 
            WritableCellFormat dateFormat =
                    new WritableCellFormat (customDateFormat);
 
            sheet.addCell(new jxl.write.DateTime(0, i, new Date(), dateFormat));
            DateFormat customDateFormat2 =
                    new DateFormat ("hh:mm");
 
            WritableCellFormat dateFormat2 =
                    new WritableCellFormat (customDateFormat2);
            sheet.addCell(new jxl.write.DateTime(1, i, new Date(), dateFormat2));
 
           
           
            //Escribimos los resultados al fichero Excel
            workbook.write();
           
 
           
 
            System.out.println("Ejemplo finalizado.");
        }
        catch (IOException ex)
        {
            System.out.println("Error al crear el fichero.");
        }
        catch (WriteException ex)
        {
            System.out.println("Error al escribir el fichero.");
        }
    }

Ante todo gracias y se aceptan críticas XD


Título: Re: Manejo de excel con java.
Publicado por: 0vatsug en 30 Agosto 2014, 05:36 am
¿Lanza alguna excepción? ¿Te estás asegurando que estés trabajando con la misma instancia de Workbook?


Título: Re: Manejo de excel con java.
Publicado por: turion en 30 Agosto 2014, 05:46 am
No excepcion no lanza. El metodo crearexcel() se ejecuta al iniciar el programa y el escribirexcel() cada vez que se pulsa el botón enviar... no se si es a lo que te refieres


Título: Re: Manejo de excel con java.
Publicado por: madara1412 en 30 Agosto 2014, 06:17 am
No he visto algún dato que diga en que fila o columna ira el dato
Yo ago. Eso por ejemplo con lo siguiente


Código:
HSSFWorkbook libro = new HSSFWorkbook();
HSSFSheet hoja = libro.createSheet();
HSSFRow fila = hoja.createRow(i);
for (i = 22; i < jTable2.getRowCount()+22; i++) {
            // fila  fila = hoja.createRow(i);  se usara la selda numero i para poner el dato
            fila = hoja.createRow(i);          
            }
                for (int j = 0; j < jTable2.getColumnCount(); j++) {
                    //HSSCell celda seria columna donde ira el dato
                    HSSFCell celda = fila.createCell(j);
                        celda.setCellValue(new HSSFRichTextString(jTable2.getValueAt(I, j).toString()));
// celda.setCellValue(new HSSFRichTextString(jTable2.getValueAt(I, j).toString())) pone el dato en la columna j en la fila i del EXCEL
                }

Algo parecido para indicar dónde poner el dato así puede poner más de 1 dato y además decir en que fila y columna lo quieres es lo ideal para reportes


Título: Re: Manejo de excel con java.
Publicado por: turion en 30 Agosto 2014, 06:32 am
las filas se introducen asi:

Código:
  sheet.addCell(new jxl.write.Number(1, i, 1.2));
            sheet.addCell(new jxl.write.Number(2, i, 732));
            sheet.addCell(new jxl.write.Label(3,i,555)"));

lo que no consigo es iterar 2 veces seguidas el método.


Título: Re: Manejo de excel con java.
Publicado por: turion en 31 Agosto 2014, 03:09 am
Me podríais indicar algun ejemplo de métodos de escritura sin crear el excel? Todo lo que encuentro es creando el excel en el mismo método y no encuentro alguno en el que el excel ya esté creado


Título: Re: Manejo de excel con java.
Publicado por: turion en 31 Agosto 2014, 03:47 am
Bien he hecho un avance, le paso por referencia las posiciones donde escribir (derecha y abajo) y lo que creo que pasa es que a cada llamada del metodo escribir crea un nuevo archivo excel ya que cada vez se escribe más abajo borrando las anteriores filas.

¿Me podeis indicar como hacerlo? Aqui os dejo algo de código.


Código:
public static void escribirExcel(int derecha, int abajo, int contador)
    {
         try{
                                
                String operador =(" ejemplo");
           WritableWorkbook workbook =Workbook.createWorkbook(new File(dire+operador+".xls"));
            //Workbook workbook =Workbook.getWorkbook(new File(dire));
            //Se crea una nueva hoja dentro del libro
            WritableSheet sheet =
                    workbook.createSheet("Hoja 1", 0);
              
                                      
          
      
            
            sheet.addCell(new jxl.write.Number(derecha, abajo, 1.2));
            derecha++;
            sheet.addCell(new jxl.write.Number(derecha, abajo, 732));
            derecha++;
            sheet.addCell(new jxl.write.Label(derecha,abajo,"1234"));
           derecha++;
            //Creamos una celda de tipo fecha y la mostramos
            //indicando un patón de formato
            DateFormat customDateFormat =
                    new DateFormat ("d/m/yy");
 
            WritableCellFormat dateFormat =
                    new WritableCellFormat (customDateFormat);
 
            sheet.addCell(new jxl.write.DateTime(derecha,abajo, new Date(), dateFormat));
            DateFormat customDateFormat2 =
                    new DateFormat ("hh:mm");
 
            WritableCellFormat dateFormat2 =
                    new WritableCellFormat (customDateFormat2);
            sheet.addCell(new jxl.write.DateTime(derecha,abajo, new Date(), dateFormat2));
 
            
            
            //Escribimos los resultados al fichero Excel
            workbook.write();
            workbook.close();
 abajo++;
          
 
            System.out.println("Ejemplo finalizado.");
        }
        catch (IOException ex)
        {
            System.out.println("Error al crear el fichero.");
        }
        
        catch (WriteException ex)
        {
            System.out.println("Error al escribir el fichero.");
        }
    }