Website-Suche

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.

  1. excel2json-3
  2. 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