Pythonを使用してExcelをJSONに変換する。

ExcelファイルをJSONデータに変換する方法はたくさんあります。このチュートリアルでは、ExcelファイルをJSONに変換するための2つのPythonモジュールを紹介します。

    エクセルをJSONに変換するためのツールの一つ、「excel2json-3」です。Pandasも使用できます。

excel2json-3モジュールを使用して、ExcelファイルをJSONファイルに変換する。

ExcelファイルをJSONファイルに変換するための非常にシンプルなモジュールです。Excelシートの内容がJSON文字列に変換され、ファイルに保存されます。ファイルの名前はExcelシートの名前から派生します。つまり、”Numbers”と”Cars”という名前の2つのシートがある場合、JSONファイルの名前はそれぞれNumbers.jsonとCars.jsonとなります。このモジュールは、変換のための.xlsおよび.xlsxファイル形式の両方をサポートしています。Excelファイルはファイルシステムからだけでなく、URLからも読み込むことができます。このモジュールはPIPコマンドを使用してインストールすることができます。

$ pip install excel2json-3
Python Excel File To Json Example
import excel2json

excel2json.convert_from_file('records.xlsx')

スクリプトは、Employees.jsonという3つの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"
    }
]

数字.json (Suji.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
    }
]

URLからExcelファイルを読み込む必要がある場合は、convert_from_url()関数を使用してください。

excel2json-3モジュールの制限

  • The plugin has very limited features.
  • There are no options to skip any sheet, rows, and columns. This makes it hard to use with bigger excel files.
  • The JSON is saved into files. Most of the times, we want to convert to JSON and use it in our program rather than saving it as a file.
  • The integers are getting converted to the floating point numbers.

Pandasモジュールを使用してExcelシートをJSON文字列に変換する。

パンダモジュールは、ExcelシートをDataFrameオブジェクトに読み込むための関数を提供しています。ヘッダーの指定、特定の列の読み込み、行のスキップなど、さまざまなオプションがあります。詳細は、「Pandas read_excel() – PythonでExcelファイルを読み込む」を参照してください。DataFrameオブジェクトをJSON文字列に変換するために、to_json()関数を使用することができます。単純な例として、「Employees」シートを読み込んで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)

出力:

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"}}

したがって、JSONデータは列の方向で作成されます。行方向のJSON文字列を作成する場合は、”orient”パラメータ値を”records”として渡してください。

json_str = excel_data_df.to_json(orient='records')

出力:

Excel Sheet to JSON:
 [{"EmpID":1,"EmpName":"Pankaj","EmpRole":"CEO"},{"EmpID":2,"EmpName":"David Lee","EmpRole":"Editor"},{"EmpID":3,"EmpName":"Lisa Ray","EmpRole":"Author"}]

結論

シンプルできちんとした構造のExcelファイルをJSONファイルに変換したい場合は、excel2json-3モジュールを使用してください。ただし、Excelデータの読み込み方法やJSON文字列への変換方法をより細かく制御したい場合は、pandasモジュールを使用してください。

参考文献

  • excel2json-3 PyPI.org Page
  • Pandas DataFrame to_json() API Doc
コメントを残す 0

Your email address will not be published. Required fields are marked *