last day (15 days later) » 

8:38 PM
1
Q: ¿Como leer una columna vacio de excel en java?

cratus666joseBuen dia amigos, espero y me puedan ayudar por favor, lo que pasa es que tengo un archivo de excel que lo estoy procesando desde java y en modo debug esto es lo que se presenta: Nota: La cuenta que sale como 7.0000193E7 vendrĂ­a siendo 70000193, ese como tal ya mas adelante cuando fluye el proces...

 
Después de la línea Cell myCell = cellIter.next(); pregunta si myCell es null. Si es null, entonces ejecuta cellStoreVector.addElement(""); o el código equivalente a una celda vacía, si no, usa cellStoreVector.addElement(myCell);. Eso debería solucionar el problema.
 
Hola @JaimeMenéndez ya metí la validación, pero no funcionó, lo de la parte cellStoreVector.addElement("");----> No funcionó ya que me salió este mensaje "The method addElement(Cell) in the type Vector<Cell> is not applicable for the arguments (String)" y probé "cellStoreVector.addElement(null);" pero tampoco entró, toda la validación fue así: if(myCell==null) { cellStoreVector.addElement(null); }else { cellStoreVector.addElement(myCell); }
 
Disculpa, solo miré el código y ahora me fijo en el debugger que desde que te llega al método te llega sin la columna. Leyendo tu código veo la causa, y es que rowIterator y cellIterator según la documentación oficial, se salta los campos vacíos: "Note that a rowIterator and cellIterator iterate over rows or cells that have been created, skipping empty rows and cells.". Justo en ese link te dan un ejemplo para el tratamiento de columnas y rows vacíos.
 
Hola, comprendo, pero otra cosa que acabo de ver, por que será que si se quita el de la ultima columna que sería el 620, para este caso si lo toma lee como vacio y lo considera nulo? Como tal no tendría que ser iguales?
 
Ten en cuenta que el iterador devuelve las celdas que tengan algún valor, formato o estilo, pero esto depende del excel. Probablemente la columna del régimen fiscal tenga formato numérico o algo así. "cellIterator solo devolverá las celdas definidas, que son aquellas con valores o estilos, pero depende de Excel". Prueba aplicando un formato a la columna vacía.
De cualquier manera intenta algo como esto pastebin.com/XNtM0Pad.
 
8:38 PM
Hola, si tienes razón, está involucrando el formato que se le pone, por ejemplo si lo pongo en general no lo toma pero si lo pongo por ejemplo en texto si lo toma en consideración, hay alguna forma de validar esto desde java?
 
La forma de validarlo es haciendo la iteración manual, y no usando cellIterator como se adjunta en la documentación oficial o en el ejemplo de mi último comentario adaptado a tu donde especifico el mínimo número de columnas a leer.
 
Hola de nuevo, estoy revisando lo que me pasaste de este link pastebin.com/XNtM0Pad ya lo comparé con lo que tengo en mi metodo, pero este enum CREATE_NULL_AS_BLANK me arroja el siguiente mensaje: CREATE_NULL_AS_BLANK cannot be resolved or is not a field, esa parte en donde mas se coloca o podría ser que por la versión de java que no lo tome en cuenta? Por ejemplo estoy usando java 7
 
¿Importaste import org.apache.poi.ss.usermodel.Row;?
 
Si lo importé de echo me lo puso en automatico, pero aún así no lo está tomando en cuenta :(
 
Prueba quitando ese segundo argumento. No es necesario. Aunque no se si funcionará como espero, dado que probablemente devuelva null. Debes estar usando una versión realmente antigua, porque hace mucho que solo dan soporte para Java >= 8.
 
8:39 PM
Hola amigo buenas tardes, la pagina me sugirió en el chat ya corrí el aplicativo, lo dejé todo en formato general (El por defecto del excel), se presentó una exception de java.lang.NullPointerException
 
Jajaj, me lo imaginé, de hecho te lo dije en mi último comentario
de que te iba a devolver null
Estaba revisando la documentación de las versiones antiguas
y es bien raro porque si acepta un segundo argumento
 
Ijoles si es cierto, creo que se cruzaron los mensaje y por eso no lo vi jaja
 
Si, de echo desde el mismo eclipse también vi que si estaba definido el enum
Metiondome a la clase
Pero fijate que también vi que no pasa lo mismo cuando cambio a otros formatos ahí si no marca error de null pointer
 
¿Cuando cambio a otros formatos?
¿A que te refieres? ¿A dar formato a la columna?
Si das formato a la columna ni siquiera necesitas lo que te pasé
tu código original funcionará
 
8:46 PM
Si, por ejemplo a texto en la columna, ya ves que seleccionas por ejemplo en texto si lo toma, pero el problema que puede ocurrir es que por defecto lo pone en general, o sea, lo mas probable es que no haga eso y así se mande
 
Cual es el error exacto que te da al poner el segundo argumento
Y ¿Que versión estás usando de poi?
 
Quita el MissingCellPolicy
prueba Row.CREATE_NULL_AS_BLANK
 
       Cell c = myRow.getCell( cn, Row.CREATE_NULL_AS_BLANK );
Ya lo ando ejecutando
 
Raro, en la nueva versión eso a mi me marca error
 
8:53 PM
ya está funcionando amigo, entonces el null pointer era por que no se le estaba pasando el segundo arcgumento?
 
Era porque si la celda estaba vacia, devolvia null y no una celda en blanco como este caso
Voy a agregar una respuesta entonces con el codigo que te pase
 
perfecto amigo muchisimas gracias, igual si hay chance poner la explicación de todo el codigo, para que los demas desarrolladores entiendan la solución por favor amigo XD
Hay alguna manera de que te pudiera contactar para mas adelante?
sasoriakasunano99@gmail.com ese es mi correo por si me quieres agregar, de momento te agradezco mucho
 
9:09 PM
Ya te agregué y agregué respuesta. Aceptala si resolvió tu problema. Buena suerte!
 
Aún no le sé mover del todo, pero creo que sería así verdad?
Igual ya puse mi comentario diciendo que ya funcionó la solución
 
Si es así. Te agregué en hangout. Saludos
 
9:52 PM
Perfecto, muchas gracias, saludos.
 

last day (15 days later) »