Estoy escribiendo un programa para leer un archivo xml grande y crear un archivo de Excel a partir de él. Los atributos de cada nodo serán los encabezados de columna en el archivo de Excel. Creé un objeto Dom y obtuve la lista de nodos. Necesito iterar a través de él y para cada nodo, necesito agregar una fila en la hoja de Excel con los valores de los atributos del nodo como valores de columna. Entonces, al iterar, necesito crear filas dinámicamente. ¿Cómo puedo hacerlo? No veo una funcionalidad para agregar filas creadas en Apache POI, hasta ahora lo que he visto es definir nuevas filas cada vez. No puedo hacerlo ya que tiene más de 5000 entradas. Básicamente lo que quiero hacer es:
Node node = null;
HSSFRow datarow = null;
for (int i = 0; i < nodeList.getLength(); i++) {
node = nodeList.item(i);
datarow = spreadSheet.createRow(i);
//set values for data row here, and add it.
//so in the loop, next time the same variable will be assigned to spreadSheet.createRow(1) etc.
}
Entiendo que createRow se invoca desde spreadSheet, que le agregará la fila. Pero en el bucle, la misma variable también se asignará a otras filas, así que creo que finalmente solo obtendré 1 fila. Por favor, aconséjeme sobre esto.
Solución del problema
Prueba lo siguiente
Node node = null;
HSSFRow datarow = null;
for (int i = 0; i < nodeList.getLength(); i++) {
// On each loop you get the value of node item
node = nodeList.item(i);
//For every new node list you will create a row
datarow = spreadSheet.createRow(i);
//Finally set the node value to the columns of the newly created Row
}
Espero que esto ayude!!
No hay comentarios:
Publicar un comentario