Analizando ficheros CSV con Javascript
Spanish (Español) translation by Rolando Gonzalez (you can also view the original English article)

El formato de archivo CSV (Comma Separated Values) (Valores Separados por Coma) es una forma popular de intercambio de datos entre aplicaciones.
En este rápido consejo, aprenderemos como JavaScript puede ayudarnos a visualizar los datos de un archivo CSV.
Creando un archivo CSV
Para comenzar, vamos a crear un archivo CSV simple. Para ello, tomaremos ventaja de Mockaroo, un generador de prueba de datos en línea. Este es nuestro archivo:

Convirtiendo un archivo CSV en una tabla HTML
Ahora que hemos generado el fichero, estamos listos para analizarlo y construir una tabla HTML asociada a él.
Como primer paso, usaremos la función ajax de jQuery para obtener los datos del archivo:
1 |
$.ajax({ |
2 |
url: 'csv_data.csv', |
3 |
dataType: 'text', |
4 |
}).done(successFunction); |
Suponiendo que la petición AJAX es exitosa, se ejecuta successFunction. Esta función es responsable de analizar los datos devueltos y transformarlos en una tabla HTML:
1 |
function successFunction(data) { |
2 |
var allRows = data.split(/\r?\n|\r/); |
3 |
var table = '<table>'; |
4 |
for (var singleRow = 0; singleRow < allRows.length; singleRow++) { |
5 |
if (singleRow === 0) { |
6 |
table += '<thead>'; |
7 |
table += '<tr>'; |
8 |
} else { |
9 |
table += '<tr>'; |
10 |
}
|
11 |
var rowCells = allRows[singleRow].split(','); |
12 |
for (var rowCell = 0; rowCell < rowCells.length; rowCell++) { |
13 |
if (singleRow === 0) { |
14 |
table += '<th>'; |
15 |
table += rowCells[rowCell]; |
16 |
table += '</th>'; |
17 |
} else { |
18 |
table += '<td>'; |
19 |
table += rowCells[rowCell]; |
20 |
table += '</td>'; |
21 |
}
|
22 |
}
|
23 |
if (singleRow === 0) { |
24 |
table += '</tr>'; |
25 |
table += '</thead>'; |
26 |
table += '<tbody>'; |
27 |
} else { |
28 |
table += '</tr>'; |
29 |
}
|
30 |
}
|
31 |
table += '</tbody>'; |
32 |
table += '</table>'; |
33 |
$('body').append(table); |
34 |
}
|
Bueno, la idea es convertir cada una de las filas del archivo CSV en una fila de la tabla. Teniendo esto en cuenta, vamos a explicar brevemente cómo funciona el código anterior:
- Primero, utilizamos una expresión regular para dividir la respuesta de AJAX y así separar las líneas CSV.
- Luego, hacemos una iteración entre las filas del archivo CSV y dividimos sus campos de datos.
- Finalmente, recorreremos los campos de datos y creamos las celdas correspondientes de la tabla.
Aún más, para tener una mejor idea de este código, considere la siguiente visualización:

En este punto, es importante aclarar por qué usamos regex /\r?\n|\r/ para dividir las filas del archivo CSV.
Como probablemente ya sabes, hay diversas formas de representar una nueva línea en los sistemas operativos. Por ejemplo, en las plataformas Windows los caracteres que representan un salto de línea son \r\n. Dicho esto, mediante el uso de la expresión regular anterior, seremos capaces expresar todas las representaciones posibles.
Además, la mayoría de editores de texto nos permiten elegir el formato de una nueva línea. Tomemos, por ejemplo, Notepad ++. En este editor podemos especificar el formato deseado para un documento en:

Para ilustrarlo, considere nuestro archivo. Dependiendo del formato que elegimos, luciria asi:

Agregando estilos a la tabla HTML
Antes nos fijamos en el resultado de la tabla, vamos a añadirle unos estilos básicos:
1 |
table { |
2 |
margin: 0 auto; |
3 |
text-align: center; |
4 |
border-collapse: collapse; |
5 |
border: 1px solid #d4d4d4; |
6 |
}
|
7 |
|
8 |
tr:nth-child(even) { |
9 |
background: #d4d4d4; |
10 |
}
|
11 |
|
12 |
th, td { |
13 |
padding: 10px 30px; |
14 |
}
|
15 |
|
16 |
th { |
17 |
border-bottom: 1px solid #d4d4d4; |
18 |
}
|
Esta es la tabla generada:

Conclusión
En este corto artículo,fuimos a traves del proceso de convertir un archivo CSV en una tabla HTML. Por supuesto, podríamos haber utilizado una herramienta web para esta conversión, sin embargo, creo que siempre es un reto lograrlo escribinedo tu propio código.
¡Sé el primero en conocer las nuevas traducciones–sigue @tutsplus_es en Twitter!



