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.