Manejo de excel con java.

Iniciado por turion, 30 Agosto 2014, 05:03 AM

0 Miembros y 1 Visitante están viendo este tema.

turion

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.

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.");
        }
    }



Citarpublic 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

0vatsug

¿Lanza alguna excepción? ¿Te estás asegurando que estés trabajando con la misma instancia de Workbook?

turion

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

madara1412

#3
No he visto algún dato que diga en que fila o columna ira el dato
Yo ago. Eso por ejemplo con lo siguiente


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

turion

las filas se introducen asi:

  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.

turion

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

turion

#6
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.


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.");
       }
   }