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.

mkoryak
la source
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

Zmonteca
la source
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.

Shan Carter
la source
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

knb
la source
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();
Matt York
la source
Si j'ai Excel stocké à E: /exceloutput.xlsx. Quelles seraient les valeurs dans file et inp dans les deux premières lignes?
Kate
11

Cela fonctionne pour moi et fonctionne côté client: http://www.convertcsv.com/csv-to-json.htm

dataman
la source
1
Merci pour la suggestion :) Le convertisseur fonctionne bien.
Nekto
1
Celui-ci comprend le délimiteur de tabulation, vous pouvez donc coller directement à partir d'Excel.
Arlen Beiler
6

Je viens de trouver ceci:

http://tamlyn.org/tools/csv2json/

(Remarque: vous devez avoir votre fichier csv disponible via une adresse Web)

DanDan
la source
1
Ce service nécessite un bouton de téléchargement.
neoneye le
2
le web est tombé en panne
Fai Zal Dong
Le lien ne fonctionne pas
Aditya
6

Essayez le petit outil gratuit:

http://keyangxiang.com/csvtojson/

Il utilise le module csvtojson node.js

Keyang
la source
Ce n'est plus en direct.
gm2008
Le lien est à jour. Ça devrait marcher.
Keyang
C'est sur GitHub . C'est l'outil le plus flexible. Je voulais un moyen de créer des tableaux ou des objets imbriqués en utilisant CSV ( exemple ).
Michael McGinnis
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))
Tronic
la source
Est-ce lié à johntron.com/creations/csv-to-json
David
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 .

StaxMan
la source
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

qxotk
la source
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