convertir CSV / XLS a JSON? [cerrado]


142

¿Alguien sabe si hay una aplicación que me permita convertir preferiblemente XLS a JSON?

También me conformaré con un convertidor de CSV ya que eso es lo que probablemente terminaré teniendo que escribir yo mismo si no hay nada alrededor.


¿Cómo se estructura el XLS? ¿Asume que la primera fila son los encabezados de columna?
SheetJS


CsvCruncher toma CSV como una tabla SQL y le permite hacer una SELECCIÓN, exportando el resultado como CSV o JSON. github.com/OndraZizka/csv-cruncher
Ondra Žižka

Esto se puede hacer fácilmente usando el marco de datos de pandas. Importe su csv al marco de datos de pandas y conviértalo a json.
R4444

1
Te sugiero que mires Data Transformer (descargo de responsabilidad: soy su desarrollador). Convierte entre CSV, JSON, XML y YML localmente. Ofrece una serie de configuraciones de conversión (con buenos valores predeterminados) para que pueda adaptar el resultado a sus propósitos. Puede obtenerlo en Mac App Store o Microsoft Store .
Geo Systems

Respuestas:


77

Esto funcionó perfectamente para mí y NO requiere la carga de un archivo:

https://github.com/cparker15/csv-to-json?files=1


Si desea convertir a texto puede pegar su código, use la opción "Actionscript".
Steve O'Connor

Desafortunadamente este sitio fue abajo
Mazen Kasser

3
Parece que la fuente está en GIT: github.com/cparker15/csv-to-json?files=1
zmonteca

@zmonteca Actualizó la respuesta con su enlace
robertc

Gracias, funciona. solo necesita actualizar las dependencias de este proyecto, de lo contrario no se ejecutará
hd84335

195

Puedes probar esta herramienta que hice:

Mr. Data Converter

Se convierte a JSON, XML y otros.

También es del lado del cliente, por lo que sus datos nunca salen de su computadora.


parece interesante, mal volver a este cuando tengo necesidad de nuevo
mkoryak

66
Está bien, pero tenga en cuenta que no escapa a las comillas correctamente. Cuando su CSV contiene comillas dobles, la salida no se le escapa. Puede que tenga que hacerlo a mano. Herramienta muy útil, no obstante.
barrycarton

Gran herramienta! bien hecho. @barrycarton parece que esto se ha solucionado si extrae el último código de Github. El que está en el enlace de arriba parece anticuado.
Bach

Hola @Shan Carter, quiero que el usuario solo cargue el archivo de Excel, no copie el contenido de Excel, ¿es posible con el código actual o debería bifurcarlo (si es posible hacerlo)? Por favor comparte tus pensamientos.
Rahul Gautam

1
Impresionante herramienta, @Shan Carter. Me tomé la libertad de arreglar algunas cosas en mi tenedor aquí: thdoan.github.io/mr-data-converter
thdoan

38

Desde Powershell 3.0 (incluido con Windows 8, disponible para Windows 7 y Windows Server 2008 pero no Windows Vista) puede usar el comando incorporado convertto-json:

PS E:> $topicsjson = import-csv .\itinerary-all.csv | ConvertTo-Json 

PS E:\> $topicsjson.Length
11909

PS E:\> $topicsjson.getType()

IsPublic IsSerial Name                                     BaseType                  
-------- -------- ----                                     --------                  
True     True     Object[]                                 System.Array              

Página de ayuda en línea en Technet


77
Crédito adicional: guarde json en un archivo ... $ topicsjson | Add-Content -Path "mydata.json"
brady321

28

Si no puede encontrar una solución existente, es bastante fácil crear una solución básica en Java. Acabo de escribir uno para un cliente y me tomó solo un par de horas, incluidas las herramientas de investigación.

Apache POI leerá el binario de Excel. http://poi.apache.org/

JSONObject construirá el JSON

Después de eso, solo es cuestión de iterar a través de las filas en los datos de Excel y construir una estructura JSON. Aquí hay un pseudocódigo para el uso básico.

FileInputStream inp = new FileInputStream( file );
Workbook workbook = WorkbookFactory.create( inp );

// Get the first Sheet.
Sheet sheet = workbook.getSheetAt( 0 );

    // Start constructing JSON.
    JSONObject json = new JSONObject();

    // Iterate through the rows.
    JSONArray rows = new JSONArray();
    for ( Iterator<Row> rowsIT = sheet.rowIterator(); rowsIT.hasNext(); )
    {
        Row row = rowsIT.next();
        JSONObject jRow = new JSONObject();

        // Iterate through the cells.
        JSONArray cells = new JSONArray();
        for ( Iterator<Cell> cellsIT = row.cellIterator(); cellsIT.hasNext(); )
        {
            Cell cell = cellsIT.next();
            cells.put( cell.getStringCellValue() );
        }
        jRow.put( "cell", cells );
        rows.put( jRow );
    }

    // Create the JSON.
    json.put( "rows", rows );

// Get the JSON text.
return json.toString();

Si tengo Excel almacenado en E: /exceloutput.xlsx. ¿Cuáles serían los valores en file e inp en las dos primeras líneas?
Kate




5

Ninguna de las soluciones existentes funcionó, así que rápidamente pirateé un script que haría el trabajo. También convierte cadenas vacías en nulos y separa la fila de encabezado para JSON. Es posible que deba ajustarse según el dialecto CSV y el juego de caracteres que tenga.

#!/usr/bin/python
import csv, json
csvreader = csv.reader(open('data.csv', 'rb'), delimiter='\t', quotechar='"')
data = []
for row in csvreader:
    r = []
    for field in row:
        if field == '': field = None
        else: field = unicode(field, 'ISO-8859-1')
        r.append(field)
    data.append(r)
jsonStruct = {
    'header': data[0],
    'data': data[1:]
}
open('data.json', 'wb').write(json.dumps(jsonStruct))

¿Está esto relacionado con johntron.com/creations/csv-to-json
David

No, excepto que se están utilizando las mismas bibliotecas (csv, json). Escribí mi código desde cero. Los bucles son necesarios para el procesamiento que quería hacer (conversión de juego de caracteres y reemplazo de cadenas vacías con nulos).
Tronic

Me pregunto sobre el conflicto entre muchos de los comentarios que dicen "esto funcionó para mí" y este afirmando que "ninguna de las soluciones existentes funcionó".
B. Clay Shannon

4

En lugar de convertidores codificados, qué tal el soporte CSV para Jackson (procesador JSON): https://github.com/FasterXML/jackson-dataformat-csv . Así que el núcleo Jackson puede leer JSON como POJO, mapas JsonNode, casi cualquier cosa. Y el soporte CSV puede hacer lo mismo con CSV. Combine los dos y es un convertidor muy potente pero simple entre múltiples formatos (ya hay backends para XML, YAML y más).

Puede encontrar un artículo que muestra cómo hacer esto aquí .


3

Vea si esto ayuda: Volver a CSV - Convertir texto CSV a Objetos; vía JSON

Esta es una publicación de blog publicada en noviembre de 2008 que incluye el código C # para proporcionar una solución.

De la introducción en la publicación del blog:

Como Json es más fácil de leer y escribir, entonces Xml. Se deduce que CSV (valores separados por comas) es más fácil de leer y escribir que Json. CSV también tiene herramientas como Excel y otras que facilitan el trabajo y la creación. Entonces, si alguna vez desea crear un archivo de configuración o datos para su próxima aplicación, aquí hay un código para convertir CSV a JSON a objetos POCO


1
Gracias. los malos tienen al puerto este de Java, pero mejor que tratar de reinventar la rueda
mkoryak

Me alegro de que funcione, c # -> Java es una muy buena combinación de todos modos.
qxotk
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.