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

consulta sobre POI Excel en JAVA

Estas en el tema de consulta sobre POI Excel en JAVA en el foro de Java en Foros del Web. Hoal buenas noches, tengo un problema que me tiene loco desde hace 2 amanecidas!. Verán estoy usando la librería POI de Apache para generar una ...
  #1 (permalink)  
Antiguo 22/05/2012, 18:26
 
Fecha de Ingreso: mayo-2012
Mensajes: 31
Antigüedad: 11 años, 11 meses
Puntos: 0
Busqueda consulta sobre POI Excel en JAVA

Hoal buenas noches, tengo un problema que me tiene loco desde hace 2 amanecidas!.
Verán estoy usando la librería POI de Apache para generar una Tabla de datos en excel desde JAVA este es mi código:

public void exportar(int cantidaddeNodos) throws FileNotFoundException, IOException{

String ruta="D:\\tiempos.xls";
HSSFWorkbook libro=new HSSFWorkbook();
HSSFSheet hoja1=libro.createSheet("HOJA 1");


//titulos
HSSFRow fila=hoja1.createRow((short)0);
for(int i=0; i<titulos.length; i++){
HSSFCell celda=fila.createCell((short)i+0);
celda.setCellValue(titulos[i]);
}

//cantidad de nodos
int ifinal=0;
for(int i=1; i<=cantidaddeNodos; i++){
HSSFRow filacantidaddeNodos=hoja1.createRow((short)1+ifina l);
HSSFCell celdacantidaddeNodos=filacantidaddeNodos.createCel l((short)0+0);
celdacantidaddeNodos.setCellValue(""+i*1000);

hoja1.addMergedRegion(new CellRangeAddress((1+ifinal),(i*12), 0,0));
ifinal=i*12;
}

//porcentaje de arcos
String[] porcentajes=porcentajes(cantidaddeNodos);
int jfinal=0;
for(int j=1; j<=(cantidaddeNodos*3); j++){
HSSFRow filaporcentajes=hoja1.createRow((short)jfinal+1);
HSSFCell celdaj=filaporcentajes.createCell((short)1+0);
celdaj.setCellValue(porcentajes[j-1]);

hoja1.addMergedRegion(new CellRangeAddress((1+jfinal),(j*4), 1,1));
jfinal=j*4;
}

//tiempos de ejecucion
for(int z=0; z<(cantidaddeNodos*12); z++){
double[] tiempos=tiempos();
HSSFRow filaTiempos=hoja1.createRow((short)z+1);
for(int a=0; a<tiempos.length; a++){
HSSFCell celdaA=filaTiempos.createCell((short)a+2);
celdaA.setCellValue(tiempos[a]);
}
}

//ajusta la celda
for(int w=0; w<6; w++)
hoja1.autoSizeColumn(w);


//escribir en el archivo

FileOutputStream fileout=new FileOutputStream(ruta);
libro.write(fileout);
fileout.close();

}

Como ven estoy insertando los títulos de la tabla, una columna para cantidad de nodos, otra para porcentajede arcos y otra para los tiempos de ejecución.
Resulta que a la hora de abrir mi archivo en excel, sólo me imprime la última parte, osea la de tiempos de ejecución a y los títulos también, pero no me imprime la columna de cantidad de nodos, ni la de porcentaje de arcos.

Y me queda la tabla asi como la de la imagen: http://imageshack.us/photo/my-images/441/imagentabla.png/

Porfavor si alguien sabe donde esta mi error se los agradecería mucho!
  #2 (permalink)  
Antiguo 23/05/2012, 00:55
 
Fecha de Ingreso: mayo-2012
Ubicación: UK
Mensajes: 9
Antigüedad: 11 años, 11 meses
Puntos: 5
Respuesta: consulta sobre POI Excel en JAVA

Hola,

El problema es que creas 3 objetos fila:

HSSFRow filacantidaddeNodos
HSSFRow filaporcentajes
HSSFRow filaTiempos

Deberías crear sólamente una fila.
HSSFRow fila;

Por otro lado, como vas creando las celdas para cada uno de estos objetos, tendrías que cambiar el código para:

HSSFCell celdacantidaddeNodos=fila.createCel l((short)0+0);
HSSFCell celdaA=fila.createCell((short)a+2);
HSSFCell celdacantidaddeNodos=fila.createCel l((short)0+0);

y así vas creando cada celda de una determinada fila, y pasas a la siguiente.
  #3 (permalink)  
Antiguo 23/05/2012, 01:29
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: consulta sobre POI Excel en JAVA

Yo me centraría primero en establecer las regiones del documento (se vé que hay regiones que combinan varias celdas), y luego en cubrir los datos.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}

Etiquetas: excel, poi, string
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 11:31.