Python Excel zu JSON Konvertierung
Es gibt viele Wege, eine Excel-Datei in JSON-Daten zu konvertieren. In diesem Tutorial werden wir uns zwei Python-Module ansehen, um Excel-Dateien in JSON zu konvertieren.
Module für die Konvertierung
- 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 JSON-String konvertiert und in einer Datei gespeichert. Der Name der Dateien wird von den Namen der Excel-Blätter abgeleitet. Wenn es also zwei Blätter mit den Namen „Numbers“ und „Cars“ gibt, werden die JSON-Dateien entsprechend als Numbers.json und Cars.json benannt. Das Modul unterstützt sowohl das .xls- als auch das .xlsx-Dateiformat zur Konvertierung. Wir können die Excel-Datei sowohl aus dem Dateisystem als auch aus der URL lesen. Dieses Modul kann mit dem PIP-Befehl installiert werden.
$ pip install excel2json-3
Für unser Beispiel habe ich eine Excel-Datei mit dem Namen „records.xlsx“ erstellt, die drei Blätter hat.
Hier ist das Skript, um diese Excel-Datei in JSON-Dateien zu konvertieren.
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"
}
]
Cars.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"
}
]
Numbers.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 begrenzte Funktionen.
- Es gibt keine Optionen, um Blätter, Zeilen und Spalten zu überspringen. Dies macht es schwierig, es mit größeren Excel-Dateien zu verwenden.
- Das JSON wird in Dateien gespeichert. Meistens möchten wir in JSON konvertieren und es in unserem Programm verwenden, anstatt es als Datei zu speichern.
- Die Ganzzahlen werden in Fließkommazahlen umgewandelt.
Konvertierung von Excel-Blättern in JSON-Strings mit dem Pandas-Modul
Das Pandas-Modul bietet Funktionen, um Excel-Blätter in DataFrame-Objekte zu lesen. Es gibt viele Optionen, um Header zu spezifizieren, bestimmte Spalten zu lesen, Zeilen zu überspringen usw. Wir können die Funktion to_json() verwenden, um das DataFrame-Objekt in einen JSON-String zu konvertieren. Sehen wir uns ein einfaches Beispiel an, um das Blatt „Employees“ 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)
Output:
Excel Sheet to JSON:
{"EmpID":...}
So werden die JSON-Daten mit der Ausrichtung der Spalten erstellt. Wenn Sie den JSON-String mit einer zeilenweisen Ausrichtung erstellen möchten, übergeben Sie den „orient“-Parameterwert als „records“.
json_str = excel_data_df.to_json(orient='records')
Output:
Excel Sheet to JSON:
[{"EmpID":1,"EmpName":"Pankaj","EmpRole":"CEO"},...]
Fazit
Wenn Sie eine einfache und gut strukturierte Excel-Datei haben und diese in JSON-Dateien konvertieren möchten, verwenden Sie das excel2json-3-Modul. Aber wenn Sie mehr Kontrolle darüber haben möchten, wie die Excel-Daten gelesen und in JSON-Strings konvertiert werden, verwenden Sie das Pandas-Modul.