View
230
Download
0
Category
Preview:
Citation preview
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
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
Recommended