Definición de Un Archivo CSV

download Definición de Un Archivo CSV

of 7

Transcript of Definición de Un Archivo CSV

  • 8/19/2019 Definición de Un Archivo CSV

    1/15

    Definición de un archivo CSV 

    archivos CSV son una forma estándar de traslado de datos desde una aplicación a otra . La mayoríade los programas que almacenan información en una base de datos tales como la contabilidad ysoft!are de seguimiento de ventas puede e"portar los datos como un archivo CSV para que puedaser entendida e importó por otro programa . Definición

    CSV es la abreviatura de valores separados por comas . #l abrir un archivo CSV en un programa de

    procesamiento de te"tos cada información $valor% está separado por una coma. Los archivos CSV 

    son tambi&n conocidos como archivos delimitados por comas .

    'ipos de aplicaciones

    Cualquier programa de edición de te"to incluyendo las aplicaciones básicas como el (loc de notas

     y )ord*ad puede abrir un archivo CSV. *rogramas de ho+as de cálculo como ,icrosoft -"cel y 

    oogle Spreadsheets tambi&n puede importar archivos CSV insertando cada pie/a de datos en su

    propia celda de tabla. #lgunas aplicaciones que utili/an bases de datos como los datos de Salesforce

    importación y e"portación de archivos CSV .

    0dentificación

    0dentificar archivos CSV por su e"tensión de archivo 1 . Csv1 . *ara ver la e"tensión de un archivo en

     )indo!s haga clic en el nombre del archivo y seleccione 1 *ropiedades1. 2aga clic en la pesta3a

    1eneral 1 y busca 1 valores separados por comas 1 en el 1'ipo de #rchivo1 de línea. -n ,ac 4S 5

    haga clic una ve/ en el archivo para resaltarlo y a continuación pulse 1 Cmd 6 0 1 para que apare/ca

    la pantalla 4btener información. ,ira deba+o de 1 7ombre y -"tensión 1 para ver si el nombre del

    archivo termina en CSV.

    'ama3o

    Debido a que son archivos de te"to básicos con cero formato $por e+emplo fuentes especiales te"to

    en negrita % los archivos CSV son significativamente más peque3os que otros archivos $por

    e+emplo archivos de ,icrosoft -"cel 5LS % que contienen la misma información . osCommerce

     #dvertencia

  • 8/19/2019 Definición de Un Archivo CSV

    2/15

    pie/as individuales de información $ los valores % guardado en un archivo CSV no puede contener

    comas o el programa de importar el CSV interpretará el valor como dos valores independientes .

    *or e+emplo si guarda el nombre de una persona como 1 (ro!n 8ohn 1 y la e"portación como un

    archivo CSV y luego tratar de importar el CSV en otro programa el nuevo programa tendrá en

    cuenta 1 (ro!n1 y 1 8ohn 1 ser dos nombres distintos. -vite esta situación eliminando las comas de

    los valores individuales antes de tiempo $por e+emplo cambiar 1(ro!n 8ohn 1 a 1 8ohn (ro!n1 % .

    Archivos CSV (Comma separated fle)

    Este tipo de archivos es un "estandar de acto" para muchas aplicaciones,incluyendo planillas de cálculo

    y bases de datosArchivo CSV!

    Sebastián,ere#,$$,%$&''

     ose,*artine#,%$,+%%$%-

    .arina,/on#ale#,$%,%+&-0&

    *aria 1aura,2a3es,-,+$0&%++

    Archivo CSV con otro separador (4)!

    Sebastián4ere#4$$4%$&''

     ose4*artine#4%$4+%%$%-

    .arina4/on#ale#4$%4%+&-0&

    *aria 1aura42a3es4-4+$0&%++

    1eyendo CSV sin usar m5dulo CSV

    Con las herramientas vistas hasta este momento podemos procesar dichosarchivos!

    h 6 open(7archivot8t7)

    or line in h!

     linea 6 linesplit(7,7)

     9 procesar elementos!

     nombre 6 linea:;<

     apellido 6 linea:<

     9 etc, etc

  • 8/19/2019 Definición de Un Archivo CSV

    3/15

    hclose()

    Aun=e ython tiene un m5dulo especialmente preparado para esto!

    CSV con m5dulo CSV

    >so del m5dulo CSV!

    import csv

    6 open(7ncsv7)

    lns 6 csvreader()

    or line in lns!

     nombre 6 line:;<

     apellido 6 line:<

    9Cambiando separador (delimitador)!

    6 open(7ncsv7)

    lns 6 csvreader(,delimiter6747)

    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 eces necesitamos trabajar con documentos en !orma de !ilas " columnas# como!uentes de datos. $odemos para ello usar documentos e%cel " utili&ar alguna librer'a como$(I para procesarlos. )in embargo# a eces no es necesario complicar tanto las cosas "podemos usar !ormatos de !icheros mas sencillos como los !icheros *)+ ,comma separatedalues-. En la i/ipedia dan esta de!inici0n de *)+:

    "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 lasfilas por saltos de línea. Los campos que contengan una coma, un salto de línea o una comilladoble deben ser encerrados entre comillas dobles."  

    $odemos usar cualuier editor de te%tos para generar este tipo de documentos# inclusotambi2n otros programas de hojas de cálculo ,e%cel# openo!!ice calc...- 3demás# como normase usa como delimitador el caracter coma# aunue se puede usar otro caracter comoseparador.

  • 8/19/2019 Definición de Un Archivo CSV

    4/15

    +amos por lo tanto a generarnos nuestro primer documento *)+. 4o lo o" a hacer con(pen(!!ice:

  • 8/19/2019 Definición de Un Archivo CSV

    5/15

    +amos a guardar el documento como *)+:

    )eleccionamos el caracter delimitador " el juego de caracteres:

    na e& guardado# comprobemos lo ue es realmente un !ichero *)+:

  • 8/19/2019 Definición de Un Archivo CSV

    6/15

    )e puede comprobar ue un documento *)+ no es más ue un !ichero de te%to# donde seseparan las columnas por un caracter delimitador " las !ilas por un salto de l'nea.

    )er'a sencillo generarnos nuestro propio c0digo para tratar este tipo de !icheros# pero...6Es

    necesario reinentar la rueda7.

    8uscando en google# he encontrado este enlace:

    http:99source!orge.net9projects9jaacs9

     3ui podemos encontrar una sencilla librer'a jaa para tratar este tipo de !icheros. +amos aprobarla:

    Descomprimimos en algun lugar del disco " encontramos la documentaci0n de la librer'a " el!ichero con los binarios: csv.jar 

    (s recomiendo echar un ista&o a la documentaci0n ,inde%.html-# no perder2is mucho tiempo

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

  • 8/19/2019 Definición de Un Archivo CSV

    7/15

    porue son dos clases:

    EMPEZANDO A TRABAJAR.

    +amos a empe&ar a hacer algo interesante. (s propongo el siguiente programa:

    1. Leer el documento *)+ creado arriba#

    . $ara cada palabra# ponerla al re2s " rellenar la segunda columna de cada !ila.

    ;. *omprobar si cada palabra es pal'ndroma ,se lee igual de derecha a i&uierda ue dei&uierda a derecha- " rellenar la tercera columna con el resultado.

    ara empe#ar, abriremos eclipse y crearemos un proyecto ?ava nuevo (yo le he

    llamado A1@BD*DS)

    A3adiremos al C1ASSAF de nuestro proyecto la librerGa ?avacvs (cvs?ar)!

  • 8/19/2019 Definición de Un Archivo CSV

    8/15

    os crearemos una clase =ue nos sirva de base para nuestro proHrama!com.autentia.tutoriales.csv.Palindromos:

  • 8/19/2019 Definición de Un Archivo CSV

    9/15

    os vamos a crear otra clase =ue representará un fla en el fchero CSV 1avamos a denominar VDalindromo, a continuaci5n os muestro el c5diHo!

    public class VDalindromo implements Seriali#able I  private StrinH palabra4

      private StrinH reves4  private boolean palindromo4 

    public StrinH Hetalabra() I  return palabra4  J  public void setalabra(StrinH palabra) I  thispalabra 6 palabra4

  • 8/19/2019 Definición de Un Archivo CSV

    10/15

      J  public boolean isalindromo() I  return palindromo4  J  public void setalindromo(boolean palindromo) I  thispalindromo 6 palindromo4  J  public StrinH Heteves() I  return reves4  J  public void seteves(StrinH reves) I  thisreves 6 reves4  J

    J

    Vamos a escribir ahora un mKtodo en la clase alindromos =ue lea todas laspalabras del fchero CSV, calcule si cada palabra es palGndromo (capicLa) y lasalmacene en memoria!

    MNN  N 1ee el fchero CSV llamado pathOichero, usando como delimitador de

    N columnas! "delimitador" y crea una lista en memoria deN Db?etos de tipo VDalindromo

      N Pparam pathOichero  N Pparam delimitador  N Preturn NM 

    public 1ist leealindromos(StrinH pathOichero, StrinH delimitador)  throQs E8ception I

    Csveader cvseader 6 null4

      try I

      Oile fchero 6 neQ Oile(pathOichero)4  Oileeader reader 6 neQ Oileeader(fchero)4

    cvsReader = new CsvReader(freader,delimitador.charAt(0)); 

    StrinH:< headers 6 null41ist listaeHistros 6 neQ Array1ist()4

      MM 1eemos las cabeceras del fchero (primera fla)  i(cvsReader.readHeaders()) I  headers = cvsReader.getHeaders();

    Systemoutprintln("RRRRRRR CAECEAS BE1 O@CFED RRRRRRRRRRRR")4  or(int i6;4iTheaderslenHth4iUU) I  Systemoutprintln(headers:i

  • 8/19/2019 Definición de Un Archivo CSV

    11/15

      J  Systemoutprintln("RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR")4  J

    MM 1eemos los reHistros  Systemoutprintln("RRRRRRR A1AAS BE1 O@CFED RRRRRRRRRRRR")4  Qhile(cvsReader.readRecord()) I  MM odemos usar Het con el nombre de la cabecera o por posici5n  StrinH palabra 6 cvsReader.get(headers[0]); 

    MM >samos StrinHuer para darle la vuelta a la palabra  StrinHuer au8 6 neQ StrinHuer(palabra)4  StrinH reves 6 au8reverse()toStrinH()4

    MM Almacenamos el ob?eto VDalindromoVDalindromo palindromo 6 neQ VDalindromo()4

      palindromosetalabra(palabra)4  palindromoseteves(reves)4  MM Calculamos si es palindromo y lo almacenamos  palindromosetalindromo(palabrae=uals@HnoreCase(reves))4

    listaeHistrosadd(palindromo)4MM *ostramos por pantalla!

      Systemoutprintln("R" U palabra U" 66 " U reves U(palindromoisalindromo()W" ! S@"!" ! D"))4

    JSystemoutprintln("RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR")4

     return listaeHistros4

    J catch(E8ception e) I  throQ e4  J fnally I  i(cvseaderX6null) I  cvsReader.close();  J  J  J

    @nvo=uemos al mKtodo desde main!

    public static void main(StrinH:< arHs) I

    MM Dbtenemos el fchero y el delimitador  StrinH fchero 6 arHs:;

  • 8/19/2019 Definición de Un Archivo CSV

    12/15

      1ist listaalindromos 6 null4  try I  listaalindromos6palindromoleealindromos(fchero,delim)4  J catch (E8ception e) I

    eprintStacYrace()4  J  J

    E?ecutemos el c5diHo (no olvidar pasárle los parametros a main)!

    @nvocamos y mostramos la consola!

  • 8/19/2019 Definición de Un Archivo CSV

    13/15

    ueno, tan s5lo nos alta la parte de almacenar los resultados en el fchero CSVos crearemos otro mKtodo en la clase alindromos al =ue llamaremos!escribealindromos

    public void escribealindromos(1ist listaalindromos,StrinH pathOichero, StrinHdelimitador) throQs E8ception I  CsvZriter Qritercsv 6 null4

    try I  Oile fchero 6 neQ Oile(pathOichero)4  OileZriter Qriter 6 neQ OileZriter(fchero)4 

    MM Creamos la clase =ue nos permite escribir en el fchero CSV  Qritercsv 6 new Csvriter(fwriter,delimitador.charAt(0)); 

    MM Escribimos las cabeceras  writercsv.write(!"A#A$RA!);  writercsv.write(!A# R%&%'!);

      writercsv.write(! %' "A#*+R- !);  writercsv.endRecord(); 

    MM Escribimos los resultados  or(int i6;4iTlistaalindromossi#e()4iUU) I  VDalindromo palin 6 (VDalindromo)listaalindromosHet(i)4  writercsv.write(/alin.get"alara());  writercsv.write(/alin.getReves());

  • 8/19/2019 Definición de Un Archivo CSV

    14/15

      writercsv.write((/alin.is"alindromo())!'1!2!*!);  writercsv.endRecord();

    J catch(E8ception e) I  throQ e4  J fnally I  i(QritercsvX6null) I  writercsv.close();  J  J  J

    1o invocamos desde main!

    ....

    ....

      try I  palindromoescribealindromos(listaalindromos,fchero,delim)4  J catch (E8ception e) I

    eprintStacYrace()4  J

    Vamos a comprobar el resultado en el fchero!

  • 8/19/2019 Definición de Un Archivo CSV

    15/15

    Fa sido sencillo [ verdad W

    Ds comento =ue hay Hran cantidad de librerGas para tratar fcheros CSV, esta esuna más y unciona bien ambiKn podKis Heneraros vuestra propia librerGa, ya=ue los fcheros CSV como habKis visto son muy sencillos de tratar