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
¿Lanza alguna excepción? ¿Te estás asegurando que estés trabajando con la misma instancia de Workbook?
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
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
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.
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
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.");
}
}