Saltar al contenido

¿Leyendo en un archivo csv local en javascript?

Solución:

A continuación se explica cómo utilizar el readAsBinaryString() desde la API FileReader para cargar un archivo local.

<p>Select local CSV File:</p>
<input id="csv" type="file">

<output id="out">
    file contents will appear here
</output>

Básicamente, solo necesito escuchar el evento de cambio en <input type="file"> y llama a la función readFile.

var fileInput = document.getElementById("csv"),

    readFile = function () {
        var reader = new FileReader();
        reader.onload = function () {
            document.getElementById('out').innerHTML = reader.result;
        };
        // start reading the file. When it is done, calls the onload event defined above.
        reader.readAsBinaryString(fileInput.files[0]);
    };

fileInput.addEventListener('change', readFile);

jsFiddle

uso esta biblioteca de google: https://github.com/evanplaice/jquery-csv/ Primero, tienes que

$.get(ur_csv_file_path);

y luego use la guía de la página

Hay tantas formas de lograr lo que desea como pueda imaginar.

Si estuviera haciendo esto, podría comenzar dividiendo el texto de entrada en líneas así:

var lines = inputText.split('n');

Luego, extraería los nombres de los encabezados de la primera línea. Necesita una función para leer los valores de cada línea.

// This assumes no commas in the values names.
function getCsvValuesFromLine(line) {
    var values = line[0].split(',');
    value = values.map(function(value){
        return value.replace(/"/g, '');
    });
    return values;
}

var headers = getCsvValuesFromLine(lines[0]);

A continuación, recorrería las líneas restantes y crearía una matriz de objetos que representen los valores en las líneas.

lines.shift(); // remove header line from array
var people = lines.map(function(line) {
    var person = {};
    var lineValues = getCsvValuesFromLine(line);
    for (var i = 0; i < lines.length; i += 1) {
        person[headers[i]] = lineValues[i];
    }
    return person;
});

Si todo esto funciona, debería terminar con una matriz de objetos que representen los valores en cada línea en su CSV.


Lo anterior es un esquema aproximado de cómo podría verse el código. No lo he probado y ciertamente no está listo para producción, pero espero que le dé una idea de cómo hacer lo que desea.

He utilizado varias funciones de Javascript integradas. Sugiero buscarlos en MDN si no está familiarizado con ellos; es bueno saberlo.

Finalmente, hay una peculiaridad extraña en Javascript con su inserción automática de punto y coma (una mala característica del lenguaje, en mi opinión). Para evitar problemas, no coloque una nueva línea antes de una llave de apertura.

Escribir siempre

XXXX {
    ....
}

y no escribas

XXXX
{
    ....
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *