Conversion de Python Excel en JSON
Il existe de nombreuses façons de convertir un fichier Excel en données JSON. Dans ce tutoriel, nous allons examiner deux modules Python pour convertir des fichiers Excel en JSON.
- excel2json-3
- Les pandas
Conversion de fichiers Excel en fichiers JSON à l'aide du module excel2json-3
C'est un module très simple pour convertir des fichiers Excel en fichiers JSON. Le contenu de la feuille Excel est converti en chaîne JSON et enregistré dans un fichier. Le nom des fichiers est dérivé des noms des feuilles Excel. Ainsi, s'il y a deux feuilles avec les noms « Nombres » et « Voitures », les fichiers JSON seront nommés respectivement Nombres.json et Voitures.json. Le module prend en charge les formats de fichiers .xls et .xlsx pour la conversion. Nous pouvons lire le fichier Excel à partir du système de fichiers ainsi que de l'URL. Nous pouvons installer ce module en utilisant la commande PIP.
pip install excel2json-3
Pour notre exemple, j'ai créé un fichier Excel nommé "records.xlsx" comportant trois feuilles.
import excel2json
excel2json.convert_from_file('records.xlsx')
Le script crée trois fichiers JSON. Employees.json
[
{
"EmpID": 1.0,
"EmpName": "Pankaj",
"EmpRole": "CEO"
},
{
"EmpID": 2.0,
"EmpName": "David Lee",
"EmpRole": "Editor"
},
{
"EmpID": 3.0,
"EmpName": "Lisa Ray",
"EmpRole": "Author"
}
]
Voitures.json
[
{
"Car Name": "Honda City",
"Car Model": "City",
"Car Maker": "Honda",
"Car Price": "20,000 USD"
},
{
"Car Name": "Bugatti Chiron",
"Car Model": "Chiron",
"Car Maker": "Bugatti",
"Car Price": "3 Million USD"
},
{
"Car Name": "Ferrari 458",
"Car Model": 458.0,
"Car Maker": "Ferrari",
"Car Price": "2,30,000 USD"
}
]
Chiffres.json
[
{
"1.0": 3.0,
"2.0": 4.0
},
{
"1.0": "N1",
"2.0": "N2"
},
{
"1.0": 5.0,
"2.0": 6.0
},
{
"1.0": 7.0,
"2.0": 8.0
}
]
Si vous devez lire le fichier Excel à partir d'une URL, utilisez la fonction convert_from_url().
Limitations du module excel2json-3
- Le plugin a des fonctionnalités très limitées.
- Il n'y a pas d'options pour ignorer des feuilles, des lignes et des colonnes. Cela rend son utilisation difficile avec de plus gros fichiers Excel.
- Le JSON est enregistré dans des fichiers. La plupart du temps, nous voulons le convertir en JSON et l'utiliser dans notre programme plutôt que de l'enregistrer sous forme de fichier.
- Les entiers sont convertis en nombres à virgule flottante.
Conversion d'une feuille Excel en chaîne JSON en utilisant le module Pandas
Le module Pandas fournit des fonctions pour lire des feuilles Excel dans un objet DataFrame. Il existe de nombreuses options pour spécifier les en-têtes, lire des colonnes spécifiques, sauter des lignes, etc. Vous pouvez en savoir plus à ce sujet dans Pandas read_excel() – Lecture de fichiers Excel en Python. Nous pouvons utiliser la fonction to_json() pour convertir l'objet DataFrame en chaîne JSON. Voyons un exemple simple pour lire la feuille "Employés" et la convertir en chaîne JSON.
import pandas
excel_data_df = pandas.read_excel('records.xlsx', sheet_name='Employees')
json_str = excel_data_df.to_json()
print('Excel Sheet to JSON:\n', json_str)
Sortie :
Excel Sheet to JSON:
{"EmpID":{"0":1,"1":2,"2":3},"EmpName":{"0":"Pankaj","1":"David Lee","2":"Lisa Ray"},"EmpRole":{"0":"CEO","1":"Editor","2":"Author"}}
Donc, les données JSON sont créées avec l'orientation des colonnes. Si vous souhaitez créer la chaîne JSON avec une orientation en ligne, passez la valeur du paramètre "orient" en tant que "records".
json_str = excel_data_df.to_json(orient='records')
Sortie :
Excel Sheet to JSON:
[{"EmpID":1,"EmpName":"Pankaj","EmpRole":"CEO"},{"EmpID":2,"EmpName":"David Lee","EmpRole":"Editor"},{"EmpID":3,"EmpName":"Lisa Ray","EmpRole":"Author"}]
Conclusion
Si vous avez un fichier excel simple et bien structuré et que vous souhaitez le convertir en fichiers JSON, utilisez le module excel2json-3. Mais, si vous souhaitez plus de contrôle sur la manière dont les données excel sont lues et converties en chaîne JSON, utilisez le module pandas.
Références
- Page PyPI.org de excel2json-3
- Documentation de l'API to_json() de Pandas DataFrame

