convertire CSV / XLS in JSON? [chiuso]


142

Qualcuno sa se esiste un'applicazione che mi permetterà di convertire preferibilmente XLS in JSON?

Mi accontenterò anche di un convertitore da CSV poiché è quello che probabilmente finirò per dover scrivere da solo se non c'è nulla in giro.


Com'è strutturato XLS? Supponi che la prima riga siano le intestazioni di colonna?
SheetJS,


CsvCruncher accetta CSV come tabella SQL e consente di eseguire un SELECT, esportando il risultato come CSV o JSON. github.com/OndraZizka/csv-cruncher
Ondra Žižka

Questo può essere fatto facilmente usando il frame di dati di Panda. Importa il tuo csv in pandas dataframe e convertilo in json.
R4444

1
Ti suggerirei di guardare Data Transformer (disclaimer - sono il suo sviluppatore). Converte localmente CSV, JSON, XML e YML. Offre una serie di impostazioni di conversione (con buone impostazioni predefinite) in modo da poter personalizzare il risultato in base ai propri scopi. Puoi ottenerlo dal Mac App Store o dal Microsoft Store .
Geo Systems

Risposte:


77

Questo ha funzionato perfettamente per me e NON richiede un caricamento di file:

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


Se vuoi convertire in testo che puoi incollare nel tuo codice, usa l'opzione "Actionscript".
Steve O'Connor,

Sfortunatamente questo sito web è andato giù
Mazen Kasser il

3
Sembra che la fonte sia su GIT: github.com/cparker15/csv-to-json?files=1
zmonteca

@zmonteca Aggiornata la risposta con il tuo link
robertc,

Grazie, funziona. devi solo aggiornare le dipendenze di questo progetto, altrimenti non funzionerà
hd84335

195

Puoi provare questo strumento che ho creato:

Mr. Data Converter

Si converte in JSON, XML e altri.

È anche tutto lato client, quindi i tuoi dati non escono mai dal tuo computer.


sembra interessante, tornerò su questo quando ne avrò di nuovo bisogno
mkoryak

6
Va bene, ma attenzione che non sfugge correttamente alle virgolette. Quando il tuo CSV contiene virgolette doppie, l'output non gli sfugge. Potrebbe essere necessario farlo a mano. Strumento molto utile comunque.
Barrycarton,

Ottimo strumento! ben fatto. @barrycarton sembra che sia stato risolto se si estrae l'ultimo codice da Github. Quello al link sopra sembra obsoleto.
Bach,

Ciao @Shan Carter Voglio che l'utente carichi semplicemente il file Excel, non copi il contenuto di Excel, è possibile con il codice corrente o dovrei forkarlo (se è possibile farlo). Per favore, condividi i tuoi pensieri.
Rahul Gautam,

1
Strumento fantastico, @Shan Carter. Mi sono preso la libertà di sistemare alcune cose nel mio fork qui: thdoan.github.io/mr-data-converter
thdoan

38

Dal momento che Powershell 3.0 (fornito con Windows 8, disponibile per Windows 7 e Windows Server 2008 ma non Windows Vista) è possibile utilizzare il comando incorporato 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              

Pagina di aiuto online su Technet


7
Credito extra: salva json in un file ... $ argomentijson | Add-Content -Path "mydata.json"
brady321

28

Se non riesci a trovare una soluzione esistente è abbastanza facile crearne una base in Java. Ne ho appena scritto uno per un cliente e ci sono volute solo un paio d'ore compresi gli strumenti di ricerca.

Il PDI di Apache leggerà il file binario di Excel. http://poi.apache.org/

JSONObject costruirà il JSON

Dopodiché si tratta solo di scorrere le righe nei dati di Excel e creare una struttura JSON. Ecco alcuni pseudo codici per l'utilizzo di base.

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();

Se sto avendo Excel archiviato in E: /exceloutput.xlsx. Quali sarebbero i valori in file e inp nelle prime due righe?
Kate,




5

Nessuna delle soluzioni esistenti ha funzionato, quindi ho rapidamente messo insieme una sceneggiatura che avrebbe fatto il lavoro. Converte anche stringhe vuote in null e separa la riga di intestazione per JSON. Potrebbe essere necessario sintonizzarsi in base al dialetto CSV e al set di caratteri in uso.

#!/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))


No, tranne per il fatto che vengono utilizzate le stesse librerie (CSV, JSON). Ho scritto il mio codice da zero. I loop sono necessari per l'elaborazione che volevo fare (conversione del set di caratteri e sostituzione di stringhe vuote con null).
Tronic,

Mi chiedo il conflitto tra molti dei commenti che dicono "questo ha funzionato per me" e questo afferma che "nessuna delle soluzioni esistenti ha funzionato".
B. Clay Shannon,

4

Invece di convertitori hard-coded, che ne dici del supporto CSV per Jackson (processore JSON): https://github.com/FasterXML/jackson-dataformat-csv . Quindi il core Jackson può leggere JSON come POJO, Maps,JsonNode , quasi qualsiasi cosa. E il supporto CSV può fare lo stesso con CSV. Combina i due ed è un convertitore molto potente ma semplice tra più formati (ci sono già backend per XML, YAML e altri in fase di aggiunta).

Un articolo che mostra come fare questo può essere trovato qui .


3

Verifica se questo aiuta: Torna a CSV - Converti testo CSV in oggetti; tramite JSON

Questo è un post sul blog pubblicato a novembre 2008 che include il codice C # per fornire una soluzione.

Dall'introduzione sul post del blog:

Poiché Json è più facile da leggere e scrivere, allora Xml. Ne consegue che CSV (valori separati da virgola) è più facile da leggere e scrivere di Json. CSV ha anche strumenti come Excel e altri che rendono facile lavorare e creare. Quindi, se mai vuoi creare una configurazione o un file di dati per la tua prossima app, ecco un po 'di codice per convertire CSV in JSON in oggetti POCO


1
Grazie.
dovrò portarlo

felice che funzioni, c # -> java è comunque una partita abbastanza buona.
qxotk,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.