Trabajar con ficheros CSV

4
91471
TRABAJAR CON FICHEROS CSV


Los
ejemplos de este tutorial están hechos con el siguiente
entorno de desarrollo:

  • Jboss Eclipse
    IDE Milestone 5.

  • JDK 1.5

Muchas
veces necesitamos trabajar con documentos en forma de filas y columnas,
como fuentes de datos. Podemos para ello usar documentos excel y
utilizar alguna librería como POI para procesarlos. Sin
embargo,
a veces no es necesario complicar tanto las cosas y podemos usar
formatos de ficheros mas sencillos como los ficheros CSV (comma
separated values). En la Wikipedia dan esta definición de
CSV:

«Los
ficheros
CSV (del inglés comma-separated values) son
un tipo de documento sencillo para representar datos en forma de tabla,
en las que las columnas se separan por comas y las filas por saltos de
línea. Los campos que contengan una coma, un salto de
línea o una
comilla doble deben ser encerrados entre comillas dobles.»

Podemos usar cualquier
editor de
textos para generar este tipo de documentos, incluso también
otros programas de hojas de cálculo (excel, openoffice
calc…)
Además, como norma se usa como delimitador el caracter coma,
aunque se puede usar otro caracter como separador.

Vamos por lo tanto a generarnos nuestro primer  documento CSV.
Yo lo voy a hacer con OpenOffice:

Fichero CSV


Vamos a guardar el documento
como CSV:

Guardar como CSV

Seleccionamos el caracter delimitador y el juego de caracteres:

Seleccionamos forma de guardarlo

Una vez guardado, comprobemos lo que es realmente un fichero CSV:

CSV en bloc de notas

Se puede comprobar que un documento CSV no es más que un
fichero
de texto, donde se separan las columnas por un caracter delimitador y
las filas por un salto de línea.

Sería sencillo generarnos nuestro propio código
para
tratar este tipo de ficheros, pero…¿Es necesario
reinventar la
rueda?.

Buscando en google, he encontrado este enlace:

http://sourceforge.net/projects/javacsv/

Aqui podemos encontrar una sencilla librería java para
tratar este tipo de ficheros. Vamos a probarla:

Descargamos la librería javacvs

Descomprimimos en algun lugar del disco y encontramos la
documentación de la librería y el fichero con los
binarios: csv.jar

Os recomiendo echar un vistazo a la
documentación (index.html), no perderéis mucho
tiempo porque son dos clases:

Javadoc

EMPEZANDO A TRABAJAR.

Vamos a empezar a hacer algo interesante. Os
propongo el siguiente programa:

  1. Leer el
    documento CSV creado arriba,
  2. Para cada
    palabra, ponerla al revés y rellenar la segunda columna de
    cada fila.
  3. Comprobar si
    cada palabra es
    palíndroma (se lee igual de derecha a izquierda que de
    izquierda
    a derecha) y rellenar la tercera columna con el resultado.

Para empezar, abriremos
eclipse y crearemos un proyecto java nuevo (yo le he llamado
PALINDROMOS).

Añadiremos al CLASSPATH de nuestro proyecto la
librería javacvs (cvs.jar):

Configuramos el classpath

Nos crearemos una clase que nos sirva de base para nuestro programa:

com.autentia.tutoriales.csv.Palindromos:

Creamos la clase Palindromos

Nos vamos a crear otra clase que representará un fila en el
fichero CSV. La vamos a denominar VOPalindromo, a
continuación
os muestro el código:

Vamos
a escribir ahora
un método en la clase Palindromos que lea todas las palabras
del
fichero CSV, calcule si cada palabra es palíndromo
(capicúa) y las almacene en memoria:

Invoquemos al método desde main:

Ejecutemos
el código (no olvidar pasárle los parametros a
main):

Parametros a main

Invocamos y mostramos la
consola:

Resultado en la consola

Bueno, tan sólo nos falta la parte de almacenar los
resultados
en el fichero CSV. Nos crearemos otro método en la clase
Palindromos al que llamaremos: escribePalindromos

Lo invocamos desde main:

Vamos a comprobar el resultado en el fichero:

Resultado de la prueba

Ha sido sencillo ¿ verdad ?.

Os comento que hay gran cantidad de librerías para tratar
ficheros CSV, esta es una más y funciona bien.
También
podéis generaros vuestra propia librería, ya que
los
ficheros CSV como habéis visto son muy sencillos de tratar.

Si necesitáis ayuda, ya sabéis donde
encontrarnos: http://www.autentia.com


4 Comentarios

  1. Hola, implemente el previo codigo pero me sale este error a la hora de correrlo.

    Exception in thread \\\»main\\\» java.lang.ArrayIndexOutOfBoundsException: 1
    at paquete_palindromos.Main.main(Main.java:23)

    por que sera, estoy usando Netbeans y es algo diferente pero igual tiene la opcion para pasar los parametros al main. gracias

Dejar respuesta

Please enter your comment!
Please enter your name here