Python Excel in JSON-Konvertierung
Es gibt viele Möglichkeiten, eine Excel-Datei in JSON-Daten zu konvertieren. In diesem Tutorial werden wir uns zwei Python-Module ansehen, um Excel-Dateien in JSON umzuwandeln.
- excel2json-3
- Pandas
Konvertierung von Excel-Dateien in JSON-Dateien mit dem excel2json-3-Modul
Es ist ein sehr einfaches Modul, um Excel-Dateien in JSON-Dateien zu konvertieren. Die Inhalte aus dem Excel-Blatt werden in einen JSON-String umgewandelt und in einer Datei gespeichert. Der Name der Dateien leitet sich von den Namen der Excel-Blätter ab. Wenn es also zwei Blätter mit den Namen „Zahlen“ und „Autos“ gibt, werden die JSON-Dateien als Numbers.json und Cars.json benannt. Das Modul unterstützt die Dateiformate .xls und .xlsx für die Konvertierung. Wir können die Excel-Datei sowohl aus dem Dateisystem als auch über die URL lesen. Wir können dieses Modul mit dem PIP-Befehl installieren.
pip install excel2json-3
Für unser Beispiel habe ich eine Excel-Datei mit dem Namen "records.xlsx" erstellt, die drei Blätter enthält.
import excel2json
excel2json.convert_from_file('records.xlsx')
Das Skript erstellt drei JSON-Dateien. 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"
}
]
Autos.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"
}
]
Zahlen.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
}
]
Wenn Sie die Excel-Datei von einer URL lesen müssen, verwenden Sie die Funktion convert_from_url().
Einschränkungen des excel2json-3 Moduls
- Das Plugin hat sehr eingeschränkte Funktionen.
- Es gibt keine Optionen, um irgendwelche Blätter, Zeilen oder Spalten zu überspringen. Das macht es schwierig, mit größeren Excel-Dateien zu arbeiten.
- Die JSON wird in Dateien gespeichert. Die meiste Zeit möchten wir sie in JSON umwandeln und in unserem Programm verwenden, anstatt sie als Datei zu speichern.
- Die Ganzzahlen werden in Gleitkommazahlen umgewandelt.
Konvertierung einer Excel-Tabelle in einen JSON-String mit dem Pandas-Modul
Das Pandas-Modul bietet Funktionen zum Lesen von Excel-Tabellen in ein DataFrame-Objekt. Es gibt viele Optionen, um Header zu spezifizieren, bestimmte Spalten zu lesen, Zeilen zu überspringen usw. Weitere Informationen finden Sie unter Pandas read_excel() – Excel-Datei in Python lesen. Wir können die Funktion to_json() verwenden, um das DataFrame-Objekt in einen JSON-String zu konvertieren. Lassen Sie uns ein einfaches Beispiel ansehen, um das Blatt „Mitarbeiter“ zu lesen und in einen JSON-String zu konvertieren.
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)
Ausgabe :
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"}}
Die JSON-Daten werden mit der Ausrichtung der Spalten erstellt. Wenn Sie die JSON-Zeichenfolge mit der zeilenweisen Ausrichtung erstellen möchten, übergeben Sie den Parameterwert "orient" als "records".
json_str = excel_data_df.to_json(orient='records')
Ausgabe :
Excel Sheet to JSON:
[{"EmpID":1,"EmpName":"Pankaj","EmpRole":"CEO"},{"EmpID":2,"EmpName":"David Lee","EmpRole":"Editor"},{"EmpID":3,"EmpName":"Lisa Ray","EmpRole":"Author"}]
Schlussfolgerung
Wenn Sie eine einfache und gut strukturierte Excel-Datei haben und diese in JSON-Dateien konvertieren möchten, verwenden Sie das Modul excel2json-3. Wenn Sie jedoch mehr Kontrolle darüber haben möchten, wie die Excel-Daten gelesen und in eine JSON-Zeichenfolge konvertiert werden, verwenden Sie das pandas-Modul.
Referenzen
- excel2json-3 PyPI.org Seite
- Pandas DataFrame to_json() API-Dokumentation

