CSV / XLS in JSON konvertieren? [geschlossen]


141

Weiß jemand, ob es eine Anwendung gibt, mit der ich vorzugsweise XLS in JSON konvertieren kann?

Ich werde mich auch mit einem Konverter von CSV zufrieden geben, da ich das wahrscheinlich selbst schreiben muss, wenn nichts in der Nähe ist.


Wie ist der XLS aufgebaut? Nehmen Sie an, dass die erste Zeile die Spaltenüberschriften sind?
SheetJS


CsvCruncher verwendet CSV als SQL-Tabelle und lässt Sie SELECT ausführen, wobei das Ergebnis als CSV oder JSON exportiert wird. github.com/OndraZizka/csv-cruncher
Ondra Žižka

Dies kann einfach mit dem Pandas-Datenrahmen durchgeführt werden. Importieren Sie Ihre CSV in Pandas Dataframe und verbergen Sie sie in JSON.
R4444

1
Ich würde vorschlagen, dass Sie sich Data Transformer ansehen (Haftungsausschluss - ich bin sein Entwickler). Es konvertiert lokal zwischen CSV, JSON, XML und YML. Es bietet eine Reihe von Konvertierungseinstellungen (mit guten Standardeinstellungen), damit Sie das Ergebnis für Ihre Zwecke anpassen können. Sie können es im Mac App Store oder im Microsoft Store herunterladen .
Geo Systems

Antworten:


76

Dies hat bei mir perfekt funktioniert und erfordert KEINEN Datei-Upload:

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


Wenn Sie in Text konvertieren möchten, den Sie in Ihren Code einfügen können, verwenden Sie die Option "Actionscript".
Steve O'Connor

Leider ist diese Website ausgefallen
Mazen Kasser

3
Es sieht so aus, als ob die Quelle auf GIT ist: github.com/cparker15/csv-to-json?files=1
zmonteca

@ Zmonteca Aktualisiert die Antwort mit Ihrem Link
Robertc

Danke, es funktioniert. Sie müssen nur die Abhängigkeiten dieses
Projekts

195

Sie können dieses Tool ausprobieren, das ich erstellt habe:

Mr. Data Converter

Es wird in JSON, XML und andere konvertiert.

Es ist auch alles clientseitig, sodass Ihre Daten Ihren Computer niemals verlassen.


sieht interessant aus, ich komme darauf zurück, wenn ich wieder brauche
mkoryak

6
Es ist in Ordnung, aber beachten Sie, dass es Anführungszeichen nicht richtig entgeht. Wenn Ihre CSV doppelte Anführungszeichen enthält, entgeht die Ausgabe nicht. Möglicherweise müssen Sie dies von Hand tun. Trotzdem sehr handliches Werkzeug.
Barrycarton

Tolles Werkzeug! schön gemacht. @barrycarton Es scheint, dass dies behoben wurde, wenn Sie den neuesten Code von Github abrufen. Der unter dem obigen Link scheint veraltet zu sein.
Bach

Hallo @Shan Carter, ich möchte, dass der Benutzer nur die Excel-Datei lädt, den Inhalt von Excel nicht kopiert. Ist dies mit dem aktuellen Code möglich oder sollte ich ihn teilen (wenn dies möglich ist)? Bitte teilen Sie Ihre Gedanken.
Rahul Gautam

1
Tolles Tool, @Shan Carter. Ich habe mir erlaubt, hier ein paar Dinge in meiner Gabel zu reparieren : thdoan.github.io/mr-data-converter
thdoan

38

Seit Powershell 3.0 ( im Lieferumfang von Windows 8 enthalten, verfügbar für Windows 7 und Windows Server 2008, jedoch nicht für Windows Vista) können Sie das integrierte Befehl "convertto-json" verwenden:

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-Hilfeseite zu Technet


7
Zusätzliches Guthaben: Speichern Sie Json in einer Datei ... $ topicjson | Add-Content -Path "mydata.json"
brady321

28

Wenn Sie keine vorhandene Lösung finden können, ist es ziemlich einfach, eine einfache Lösung in Java zu erstellen. Ich habe gerade eine für einen Kunden geschrieben und es dauerte nur ein paar Stunden, einschließlich der Recherche nach Tools.

Apache POI liest die Excel-Binärdatei. http://poi.apache.org/

JSONObject erstellt den JSON

Danach müssen Sie nur noch die Zeilen in den Excel-Daten durchlaufen und eine JSON-Struktur erstellen. Hier ist ein Pseudocode für die grundlegende Verwendung.

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

Wenn Excel unter E gespeichert ist: /exceloutput.xlsx. Was wären die Werte in file und inp in den ersten beiden Zeilen?
Kate




5

Keine der vorhandenen Lösungen funktionierte, daher habe ich schnell ein Skript gehackt, das die Aufgabe übernehmen würde. Konvertiert auch leere Zeichenfolgen in Nullen und trennt die Kopfzeile für JSON. Je nach verwendetem CSV-Dialekt und Zeichensatz muss möglicherweise eine Anpassung vorgenommen werden.

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

Ist dies im Zusammenhang mit johntron.com/creations/csv-to-json
David

Nein, außer dass dieselben Bibliotheken (csv, json) verwendet werden. Ich habe meinen Code von Grund auf neu geschrieben. Die Schleifen werden für die Verarbeitung benötigt, die ich ausführen wollte (Zeichensatzkonvertierung und Ersetzen leerer Zeichenfolgen durch null).
Tronic

Ich wundere mich über den Konflikt zwischen vielen Kommentaren, die besagen, dass "das für mich funktioniert hat" und dem, der behauptet, dass "keine der vorhandenen Lösungen funktioniert hat".
B. Clay Shannon

4

Wie wäre es mit CSV-Unterstützung für Jackson (JSON-Prozessor) anstelle von fest codierten Konvertern: https://github.com/FasterXML/jackson-dataformat-csv . So kann Core Jackson JSON als POJOs, Maps JsonNode, fast alles einlesen . Die CSV-Unterstützung kann mit CSV dasselbe tun. Kombinieren Sie beide und es ist ein sehr leistungsfähiger, aber einfacher Konverter zwischen mehreren Formaten (es gibt bereits Backends für XML, YAML und mehr).

Einen Artikel dazu finden Sie hier .


3

Überprüfen Sie, ob dies hilfreich ist: Zurück zu CSV - Konvertieren von CSV-Text in Objekte; über JSON

Dies ist ein Blogbeitrag, der im November 2008 veröffentlicht wurde und C # -Code enthält, um eine Lösung bereitzustellen.

Aus dem Intro im Blogbeitrag:

Da ist Json leichter zu lesen und zu schreiben als XML. Daraus folgt, dass CSV (durch Kommas getrennte Werte) leichter zu lesen und zu schreiben ist als Json. CSV verfügt auch über Tools wie Excel und andere, mit denen Sie problemlos arbeiten und erstellen können. Wenn Sie also jemals eine Konfigurations- oder Datendatei für Ihre nächste App erstellen möchten, finden Sie hier einen Code zum Konvertieren von CSV in JSON in POCO-Objekte


1
Vielen Dank. Ich muss das auf Java portieren, aber besser als zu versuchen, das Rad neu zu erfinden
mkoryak

Ich bin froh, dass es funktioniert. C # -> Java passt sowieso ziemlich gut zusammen.
Qxotk
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.