Exportació de dades des d'un full de càlcul a algun format més "amigable"

Aquests dies, entre molts altres marrons, estic preparant l'integració de les dades d'un client nostre al nostre ERP. El primer pas, com sempre, és veure com t'arriben les dades i què hauràs de fer per a poder començar-les a treballar. Per variar, els clients passen olímpicament del que tens tu muntat, i t'envien el que els surt de les gònades, en aquest cas fitxers xls(sic).

A mi em fa falta convertir-ho a algun tipus de fitxer de text pla delimitat, i, inicialment, he trobat el programa xlhtml, el qual em permet, amb una ordre semblant a aquesta:

xlhtml -csv -xc:1-1 fitxer.xls > fitxer.csv

obtenir uns registres semblants a això:

1,2,3,4,5,6,7,8,9,10

Això permet exportar a text separat per comes. Guais…però no tant.

Resulta que el client obté les dades d'un formulari web on els seus clients poden posar certs camps de manera lliure. Què vol dir això? que apareixen comes on no hauria d'haver-ne, trencant “el meravellós món d'xlhtml”…

1,2,3,4,5,6,7,8,9,1,0

resulta que el client ha posat una coma dins el contingut de l'últim camp, entre el 1 i el 0, partint el 10 en dos camps…kk

Com que sembla que xlhtml no dóna cap altra opció com a separador, queda desestimat.

Seguim la búsqueda, i topem amb una cosa anomenada ssconvert que, curiosament, s'instal·la conjuntament amb el Gnumeric. De fet sembla ser que és una utilitat que empra certes parts del Gnumeric, i que es pot emprar des del terminal directament, podent-lo fer servir en guions bash, per exemple:

ssconvert --export-type Gnumeric_stf:stf_csv fitxer.xls fitxer.csv

Això genera, un altre cop, un fitxer separat per comes, amb el problema que ja he indicat abans.

Peeeroooò, aquí m'he trobat amb “el meravellós món de les funcionalitats no documentades”, i difícils de pebrots de trobar 🙂

Resulta que a ssconvert se li poden passar unes opcions, no incloses a hores d'ara a la documentació, i, entre d'altres, una d'elles és quin separador vols fer servir. Amb:

ssconvert --export-type=Gnumeric_stf:stf_assistant -O 'separator=| format=preserve quoting-mode=never charset=unicode' fitxer.xls fitxer.csv

Obtenim:

1|2|3|4|5|6|7|8|9|1,0

Fixeu-vos que en aquesta segona ordre, el tipus d'exportació ha passat de stf_csv a stf_assistant, ja que el primer no accepta opcions, i el segon (que és per exporta a txt) sí. També es veu que ara la coma de l'últim camp ja no m'afecta i no afegeix cap columna per error. Ara ja tinc les dades en un format que puc treballar per a importar-les a la base de dades.

Guaiiiiiisssssssss 😉

Be Sociable, Share!
Aquesta entrada va ser publicada en General. Guardar l'enllaç permanent. Afegeix un comentari o deixa un trackback: URL del Trackback.

Publicar un comentari

El teu email mai serà publicat ni compartit. Els camps obligatoris estan marcats amb un *

Pots utilitzar aquestes etiquetes i atributs HTML <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*
*