2009-03-19 19 views
126

¿Alguien sabe si hay alguna aplicación que me permita encubrir de preferencia XLS a JSON?convirtiendo CSV/XLS a JSON?

También me conformaré con un convertidor de CSV, ya que es probable que termine escribiendo solo si no hay nada.

+0

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

+0

CSVkit hace esto: http://csvkit.readthedocs.org/en/latest/scripts/csvjson.html – Amanda

Respuesta

73

Esto funcionó a la perfección para mí y no requiere de una carga de archivos:

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

+0

Si desea convertir a texto puede pegar su código, use la opción "Actionscript". –

+0

Lamentablemente este sitio web se cayó –

+2

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

3

ver si esto ayuda: Back to CSV - Convert CSV text to Objects; via JSON

Este es un post publicado en noviembre de 2008 que incluye el código C# para proporcionar una solución.

Desde la introducción en la entrada del blog:

Como JSON es más fácil de leer y escribir a continuación 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. Así que si alguna vez desea crear un archivo de datos de configuración o para su próxima aplicación, aquí hay un código para convertir CSV a JSON a POCO objetos

+1

gracias. tendré que portar esto a Java, pero mejor que tratar de reinventar la rueda – mkoryak

+0

contento de que funcione, C# -> java es una muy buena combinación de todos modos. – condiosluzverde

26

Si no puede encontrar una solución existente, es bastante fácil crear una básica en Java. Acabo de escribir uno para un cliente y me llevó 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 que es sólo una cuestión de iteración a través de las filas de los datos de Excel y la construcción de una estructura JSON. Aquí hay un pseudo có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(); 
+0

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

186

Puede probar esta herramienta hice:

Mr. Data Converter

Convierte a JSON , XML y otros.

Todo es del lado del cliente, también, por lo que sus datos nunca salgan de su computadora.

+0

parece interesante, volveré a esto cuando lo necesite de nuevo – mkoryak

+5

Está bien, pero tenga en cuenta que no se escapa de las citas correctamente. Cuando su CSV contiene comillas dobles, la salida no se escapa. Puede que tengas que hacerlo a mano. Herramienta muy útil sin excepción. – barrycarton

+0

¡Asombroso, usted gobierna! – Raspu

5

Ninguna de las soluciones existentes funcionaba, así que rápidamente pirateé un guión que haría el trabajo. También convierte cadenas vacías en nulos y separa la fila del encabezado para JSON. Puede ser necesario ajustar 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)) 
+0

Está relacionado con http://johntron.com/creations/csv-to-json/ – David

+0

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 nulo). – Tronic

+0

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

6

Tomar una prueba en la pequeña herramienta gratuita:

http://keyangxiang.com/csvtojson/

Utiliza nodo.js csvtojson module

+0

Ya no está en vivo. – gm2008

+0

El enlace está actualizado. Deberia de funcionar. – Keyang

+0

Está en [GitHub] (https://github.com/Keyang/node-csvtojson). Esta es la herramienta más flexible. Quería una forma de crear matrices anidadas u objetos usando CSV ([ejemplo] (https://github.com/mdn/learning-area/blob/master/javascript/oojs/json/superheroes.json)). –

4

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

Se puede encontrar un artículo que muestra cómo hacerlo here.

25

Desde Powershell 3.0 (incluido en Windows 8, available for Windows 7 and windows Server 2008 pero no Windows Vista), puede utilizar el incorporado en ConvertTo-JSON commandlet:

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    

Online Help Page on Technet

12

Esto funciona para mí y se ejecuta el cliente -side: http://www.convertcsv.com/csv-to-json.htm

+1

Gracias por su sugerencia :) El convertidor funciona bien. – Nekto

+1

Éste incluye el delimitador de pestañas, por lo que puede pegar directamente desde Excel. –