convertir CSV / XLS en JSON? [fermé]


142

Est-ce que quelqu'un sait s'il existe une application qui me permettra de convertir de préférence XLS en JSON?

Je me contenterai également d'un convertisseur CSV puisque c'est ce que je finirai probablement par devoir écrire moi-même s'il n'y a rien autour.


Comment le XLS est-il structuré? Supposez-vous que la première ligne correspond aux en-têtes de colonne?
SheetJS


CsvCruncher prend CSV comme une table SQL et vous permet de faire un SELECT, en exportant le résultat au format CSV ou JSON. github.com/OndraZizka/csv-cruncher
Ondra Žižka

Cela peut être facilement fait en utilisant le dataframe pandas. Importez votre csv dans pandas dataframe et convertissez-le en json.
R4444

1
Je vous suggère de regarder Data Transformer (avertissement - je suis son développeur). Il convertit localement entre CSV, JSON, XML et YML. Il propose un certain nombre de paramètres de conversion (avec de bons paramètres par défaut) afin que vous puissiez adapter le résultat à vos besoins. Vous pouvez l'obtenir sur le Mac App Store ou le Microsoft Store .
Geo Systems

Réponses:


77

Cela a parfaitement fonctionné pour moi et ne nécessite PAS de téléchargement de fichier:

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


Si vous souhaitez convertir en texte, vous pouvez coller votre code, utilisez l'option "Actionscript".
Steve O'Connor

Malheureusement, ce site Web est tombé en panne
Mazen Kasser

3
Il semble que la source soit sur GIT: github.com/cparker15/csv-to-json?files=1
zmonteca

@zmonteca a mis à jour la réponse avec votre lien
robertc

Merci, ça marche. il vous suffit de mettre à jour les dépendances de ce projet, sinon il ne fonctionnera pas
hd84335

195

Vous pouvez essayer cet outil que j'ai créé:

Mr. Data Converter

Il se convertit en JSON, XML et autres.

Tout est également côté client, de sorte que vos données ne quittent jamais votre ordinateur.


semble intéressant, je reviens mal à cela quand
j'en

6
C'est bien, mais sachez que cela n'échappe pas correctement aux guillemets. Lorsque votre CSV contient des guillemets doubles, la sortie ne lui échappe pas. Vous devrez peut-être le faire à la main. Outil très pratique néanmoins.
barrycarton

Excellent outil! Bien fait. @barrycarton, il semble que cela ait été corrigé si vous extrayez le dernier code de Github. Celui du lien ci-dessus semble obsolète.
Bach

Salut @Shan Carter Je veux que l'utilisateur charge simplement le fichier Excel, Ne copie pas le contenu d'Excel, Est-ce possible avec le code actuel ou je devrais le fourcher (s'il est possible de le faire). Veuillez partager vos pensées.
Rahul Gautam

1
Outil génial, @Shan Carter. J'ai pris la liberté de réparer quelques choses dans ma fourchette ici: thdoan.github.io/mr-data-converter
thdoan

38

Depuis Powershell 3.0 (livré avec Windows 8, disponible pour Windows 7 et Windows Server 2008 mais pas Windows Vista), vous pouvez utiliser le commandlet convertto-json intégré:

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              

Page d'aide en ligne sur Technet


7
Crédit supplémentaire: enregistrez json dans un fichier ... $ topicsjson | Add-Content -Path "mydata.json"
brady321

28

Si vous ne trouvez pas de solution existante, il est assez facile d'en créer une de base en Java. Je viens d'en écrire un pour un client et cela n'a pris que quelques heures, y compris la recherche d'outils.

Apache POI lira le binaire Excel. http://poi.apache.org/

JSONObject construira le JSON

Après cela, il suffit d'itérer les lignes des données Excel et de créer une structure JSON. Voici un pseudo code pour l'utilisation de 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();

Si j'ai Excel stocké à E: /exceloutput.xlsx. Quelles seraient les valeurs dans file et inp dans les deux premières lignes?
Kate




5

Aucune des solutions existantes ne fonctionnait, j'ai donc rapidement piraté un script qui ferait l'affaire. Convertit également les chaînes vides en valeurs nulles et sépare la ligne d'en-tête pour JSON. Il peut être nécessaire de régler le problème en fonction du dialecte CSV et du jeu de caractères dont vous disposez.

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


Non, sauf que les mêmes bibliothèques (csv, json) sont utilisées. J'ai écrit mon code à partir de zéro. Les boucles sont nécessaires pour le traitement que je voulais faire (conversion de charset et remplacement des chaînes vides par null).
Tronic

Je m'interroge sur le conflit entre de nombreux commentaires qui disent «cela a fonctionné pour moi» et celui-ci affirmant que «aucune des solutions existantes n'a fonctionné».
B. Clay Shannon

4

Au lieu de convertisseurs codés en dur, qu'en est-il du support CSV pour Jackson (processeur JSON): https://github.com/FasterXML/jackson-dataformat-csv . Ainsi, le noyau Jackson peut lire JSON en tant que POJO, cartes,JsonNode , presque n'importe quoi. Et le support CSV peut faire la même chose avec CSV. Combinez les deux et c'est un convertisseur très puissant mais simple entre plusieurs formats (il y a déjà des backends pour XML, YAML et plus encore ajoutés).

Un article expliquant comment procéder est disponible ici .


3

Voyez si cela aide: Retour au CSV - Convertir le texte CSV en objets; via JSON

Il s'agit d'un article de blog publié en novembre 2008 qui inclut du code C # pour fournir une solution.

De l'intro sur le billet de blog:

Comme Json est plus facile à lire et à écrire que Xml. Il s'ensuit que CSV (valeurs séparées par des virgules) est plus facile à lire et à écrire que Json. CSV dispose également d'outils tels qu'Excel et d'autres qui facilitent le travail et la création. Donc, si vous souhaitez créer un fichier de configuration ou de données pour votre prochaine application, voici un code pour convertir CSV en JSON en objets POCO


1
Merci. Je dois porter cela sur java, mais mieux vaut essayer de réinventer la roue
mkoryak

content que ça marche, c # -> java est de toute façon un assez bon match.
qxotk
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.