Java - error al exportar datos a excel desde java

   
Vista:

error al exportar datos a excel desde java

Publicado por Miguel Angel (8 intervenciones) el 02/06/2008 23:02:41
Hola a todos. Os comento a ver si podeis ayudarme porque tengo un pequeño marron encima. Tengo una aplicación java que tiene un boton exportar a excel, en excel 95 y 98 creo, me lo hacia bien pero en 2000 me da un error de archivo con formato no reconocido y cuando lo abro me aparece todo descolocado en una sola fila con todas las etiquetas como <td>, <tr> y asi con todas. que puedo hacer? Si necesitais mas datos o el codigo fuente decidmelo. Gracias y un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:error al exportar datos a excel desde java

Publicado por Miguel Angel (8 intervenciones) el 02/06/2008 23:04:21
os copio el codigo fuente de la clase exportar por si os sirviera de algo y me pudierais echar un cable por favor::

private void exporta( Vector emplazadas,
Vector noEmplazadas,
String fecha,
String codEmisora,
String descEmisora,
String formato ,
boolean cadena )

{

Confirm elige=
new Confirm("Elija programa",this,false);

// Vaciamos el combo
cbProg.removeAll();
// Cargamos el combo
// cbProg.addItem("*** Seleccione Programa ***");
String progra="";
Vector todo=reagrupar(emplazadas, "todos");
Vector todoNoEmplazadas=reagrupar(noEmplazadas,"todos");
Vector grupo=new Vector();
Vector cabec=new Vector();

for(int pr=0;pr<todo.size();pr++)
{
grupo=(Vector)todo.elementAt(pr);
cabec=(Vector)grupo.elementAt(0);
if(!progra.equals((String)cabec.elementAt(0)))
{
progra=(String)cabec.elementAt(0);
cbProg.addItem(progra);
}
}

for(int pr=0;pr<todoNoEmplazadas.size();pr++)
{
grupo=(Vector)todoNoEmplazadas.elementAt(pr);
cabec=(Vector)grupo.elementAt(0);
if(!progra.equals((String)cabec.elementAt(0)))
{
progra=(String)cabec.elementAt(0);
cbProg.addItem(progra);
}
}
elige.setBounds(100,100,650,220);
chTodos.setBounds(200,50,200,20);

chTodos.addItemListener(new java.awt.event.ItemListener()
{
public void itemStateChanged(ItemEvent e)
{
chTodos_itemStateChanged(e);
}
});

cbProg.setBounds(200,80,400,20);
elige.recolocaBotones(225,130,355,130);
Font fuente=new Font("TimesRoman", 1, 14);
chTodos.setFont(fuente);
cbProg.setFont(fuente);
chTodos.setState(true);
chTodos.setLabel("Todos los programas");

cbProg.setEnabled(false);
elige.add(cbProg);
elige.add(chTodos);
elige.show();

if(!elige.estaConfirmado()) return;
String programa="";
if(chTodos.getState())
{
programa="todos";
}
else
{
programa=cbProg.getSelectedItem();
/* if (cbProg.getSelectedIndex()==0)
{
_msgboxStop.setTexto("Seleccione un programa o active la casilla todos los programas.");
_msgboxStop.setVisible(true);
return;
}
*/
}

// System.out.println("programa elegido:" + cbProg.getSelectedItem());
/* System.out.println("");
for (int emp=0;emp<emplazadas.size();emp++)
System.out.println(emplazadas.elementAt(emp));
// System.out.println("noEmplazadas");
System.out.println("");

*/
/* for (int emp=0;emp<emplazadas.size();emp++)
{
System.out.println("");
Vector vec=(Vector)emplazadas.elementAt(emp);
for (int emp2=1;emp2<vec.size();emp2++)
{
System.out.println(emp2 + " :" + vec.elementAt(emp2));
}
}
*/
//System.out.println("noEmplazadas" + noEmplazadas);

StringBuffer encabezado=new StringBuffer();
StringBuffer cuerpo=new StringBuffer();

encabezado.append("<html><head><title></title></head><body>");
encabezado.append("<table border=0><tr><td>");

encabezado.append("Emisora");
encabezado.append("</td>");
encabezado.append("<td>");
encabezado.append(descEmisora);
encabezado.append("</td></tr>");
encabezado.append("<tr><td>");
// encabezado.append(" ");
encabezado.append("Fecha:");
encabezado.append("</td>");
encabezado.append("<td align=left> ");
encabezado.append(fecha);
encabezado.append("</td></tr></table>");
encabezado.append("</body></html>");
// encabezado.append(" ");
encabezado.append("<br><br>");
//System.out.println("Encabezado: "+encabezado);
cuerpo.append(new String(encabezado));
//System.out.println("Cuerpo: "+cuerpo);
cuerpo.append("<table border=1><tr><th colspan=3>");
cuerpo.append("<h3><b>PARTE DE INCIDENCIAS</b></h3>");
cuerpo.append("</th></tr>");
// cuerpo.append(" ");
cuerpo.append("<tr>");
cuerpo.append("<td>");
cuerpo.append("HORA");
cuerpo.append("</td>");
cuerpo.append("<td>");
cuerpo.append("REALIZADOR");
cuerpo.append("</td>");
cuerpo.append("<td>");
cuerpo.append("OBSERVACIONES");
cuerpo.append("</td></tr>");
cuerpo.append("<tr><td colspan=3>");
cuerpo.append("<table>");
// for (int inc=0;inc<5;inc++)
// {
cuerpo.append("<tr ><td > </td><td > </td><td > </td></tr>");
// }
cuerpo.append("</table></table>");
cuerpo.append("<br>");

//PAUTA DE PUBLICIDAD
cuerpo.append("<table border=1><tr><th colspan=6>");
cuerpo.append("<h3><b>PAUTA DE PUBLICIDAD</b></h3>");
cuerpo.append("</td></tr>");

//Guardo cada cabecera y sus cuñas en un vector 'vgrupo'
//que se lo añado al vector 'todo'

// Añado los títulos
cuerpo.append("<tr><th>");
cuerpo.append("Tipo");
cuerpo.append("</th><th>");
cuerpo.append("Titulo de las grabaciones");
cuerpo.append("</th><th>");
cuerpo.append("Duración");
cuerpo.append("</th><th>");
cuerpo.append(" </th><th>");
cuerpo.append("H. RI.");
cuerpo.append("</th><th>");
cuerpo.append("Observaciones");
cuerpo.append("</th></tr>");

//Comienzo la carga de la cadena
todo=reagrupar(emplazadas, programa);

;

Vector gr=new Vector();
Vector cun=new Vector();
int emp;
for(emp=0;emp<todo.size();emp++)
{
gr=(Vector)todo.elementAt(emp);
cun=(Vector)gr.elementAt(0);

cuerpo.append("<tr><td>");
cuerpo.append(" </td><td>");
cuerpo.append(cun.elementAt(0));
cuerpo.append("</td><td>");
cuerpo.append(" </td><td>");
cuerpo.append("Desconexion a las " + cun.elementAt(1));
cuerpo.append("</td><td>");
cuerpo.append(cun.elementAt(3)+ "s");
cuerpo.append("</td><td>");
int tiempoTotal=Integer.parseInt((String)cun.elementAt(3));
int resto=Integer.parseInt((String)cun.elementAt(2));

// int tiempoTotal=
// int ocup=Integer.valueOf(tiempoTotal)-Integer.valueOf(resto);
int ocup=tiempoTotal - resto;
cuerpo.append("ocupacion: " + ocup);

cuerpo.append("</td></tr>");

for (int cont=1;cont<gr.size();cont++)
{
cun=new Vector();
cun=(Vector)gr.elementAt(cont);
cuerpo.append("<tr><td>");
cuerpo.append((String)cun.elementAt(5) + (String)cun.elementAt(6));
cuerpo.append("</td><td>");
cuerpo.append((String)cun.elementAt(4)); //descripcion cuna
cuerpo.append("</td><td>");
cuerpo.append((String)cun.elementAt(3)); //duracion cuna
cuerpo.append("</td><td>");
cuerpo.append(" </td><td>");
cuerpo.append(" </td><td>");
cuerpo.append((String)cun.elementAt(9)); // hora inicio
cuerpo.append("/");
cuerpo.append((String)cun.elementAt(10));//hora fin
if(((String)cun.elementAt(11)).equals("S"))
cuerpo.append(". primera de bloque");
if(((String)cun.elementAt(12)).equals("S"))
cuerpo.append(". ultima de bloque");

//(cuña recordatorio )
//System.out.println(24+ "empl:xx" +(String)cun.elementAt(24) + "xx");
if(!((String)cun.elementAt(24)).equals(""))
cuerpo.append(" R");

cuerpo.append("</td></tr>");

}

}
cuerpo.append("</table>");

cuerpo.append("<br>");
cuerpo.append("<table border=1><tr><th colspan=4>");

cuerpo.append("<h3><b>CUÑAS NO EMPLAZADAS</b></h3>");
cuerpo.append("</th></tr>");
todo=reagrupar(noEmplazadas, programa);
//System.out.println("TODO: " + todo);
cuerpo.append("<tr><th>");
cuerpo.append("Tipo");
cuerpo.append("</th><th>");
cuerpo.append("Titulo de las grabaciones");
cuerpo.append("</th><th>");
cuerpo.append("Duración");
cuerpo.append("</th><th>");
cuerpo.append("Observaciones");

cuerpo.append("</th></tr>");
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:error al exportar datos a excel desde java

Publicado por Miguel Angel (8 intervenciones) el 02/06/2008 23:05:18
continuacion:

gr=new Vector();
cun=new Vector();
programa="";
int duracion=0;
for(emp=0;emp<todo.size();emp++)
{
gr=(Vector)todo.elementAt(emp);
cun=(Vector)gr.elementAt(0);
if(!programa.equals(cun.elementAt(0)))
{
if (duracion>0)
{
cuerpo.append("<tr><td>");
cuerpo.append(" </td><td>");
cuerpo.append(" </td><td >");
cuerpo.append("TOTAL: ");
cuerpo.append(duracion + "s");
cuerpo.append("</td><td>");
cuerpo.append(" </tr>");
duracion=0;
}
cuerpo.append("<tr><td>");
cuerpo.append(" </td><td>");
programa=(String)cun.elementAt(0);
cuerpo.append(programa); //programa
cuerpo.append("</td><td>");
cuerpo.append(" </td><td>");
cuerpo.append(" </td></tr>");
}
cuerpo.append("<tr><td>");
cuerpo.append((String)cun.elementAt(5) + (String)cun.elementAt(6));
cuerpo.append("</td><td>");
cuerpo.append((String)cun.elementAt(4));
cuerpo.append("</td><td>");
cuerpo.append((String)cun.elementAt(1));
duracion+=Integer.parseInt((String)cun.elementAt(1));
cuerpo.append("</td><td>");
cuerpo.append((String)cun.elementAt(2) + "/" + (String)cun.elementAt(3));
/*for(int n=0;n<cun.size();n++)
{
if (cun.elementAt(n)!=null)
System.out.println("cun(" + n + "): " + cun.elementAt(n));
} */
if(((String)cun.elementAt(18)).equals("S"))
cuerpo.append(". primera de bloque");
if(((String)cun.elementAt(19)).equals("S"))
cuerpo.append(". ultima de bloque");

//R (cuna recordatorio)
//System.out.println(24+ ":noemplxx" +(String)cun.elementAt(24) + "xx");
if(!((String)cun.elementAt(24)).equals(""))
cuerpo.append(" R");

cuerpo.append("</td></tr>");

}
cuerpo.append("<tr><td>");
cuerpo.append(" </td><td>");
cuerpo.append(" </td><td bgcolor='blue'>");
cuerpo.append("TOTAL: ");
cuerpo.append(duracion + "s");
cuerpo.append("</td><td>");
cuerpo.append(" </td><tr></table>");

duracion=0;

cuerpo.append("</body></html>");

FileOutputStream f;
ObjectOutputStream s;
String textoFinal=new String(cuerpo);
try
{

// File fichero =new File("fichero.css");
FileDialog fd=new FileDialog(new Frame(), "Seleccione archivo", fd.SAVE);
// Filtro fn=new Filtro();
// fn.accept(new File("C:excel","xls"),"Archivo xls");

// fd.setFilenameFilter(fn);
fd.setDirectory("C:excel");

fd.setFile("*.xls");
// fd.setFilenameFilter(new FilenameFilter());
fd.show();

String path=fd.getDirectory() + "" + fd.getFile();
//System.out.println("path: " + path);
f=new FileOutputStream (path, false);
s=new ObjectOutputStream (f);

if(fd.getFile()!=null && fd.getFile()!="")
{
System.out.println("textoFinal: " + textoFinal);

f.write(textoFinal.getBytes());
// textoFinal=new String(encabezado);
// for (int x=0;x<textoFinal.length();x++)
// s.writeChar(textoFinal.charAt(x));

f.close();
System.out.println("FICHERO: "+f.toString());
}

}

catch(IOException ex)
{
_msgboxStop.setTexto("Se ha producido un error al guardar el archivo. Es posible que el archivo seleccionado esté bloqueado.");
_msgboxStop.setVisible(true);

System.out.println("excepcion i/o");
System.out.println(ex.getMessage());
ex.printStackTrace();
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

más información

Publicado por Miguel Angel (8 intervenciones) el 03/06/2008 11:52:22
He comprobado que al salvar el archivo me coloca estos caracteres al inicio ’ y dos cuadrados y por eso no lo abre bien dice que es archivo de formato no reconocido pero si edito el archivo y quito esos 4 caracteres primeros el archivo excel se visualiza bien. La cadena que le pasa al outputstream la coge bien por eso digo que debe ser al salvar el archivo cuando los coloca. Utilizo un textoFinal.getBytes() para pasarle el codigo con las etiquetas al fichero. que puedo hacer? ayuda por favor gracias un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

solucionado

Publicado por Miguel Angel (8 intervenciones) el 03/06/2008 16:14:24
ya está solucionado. he utilizado un dataoutputstream en vez de un objectoutputstream y en vez de hacer un write con los bytes en el fichero se lo he hecho al dataoutputstream.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar