Pythonでexcel2json-3を使用しExcelファイルをJSONデータに変換する

Pythonでexcel2json-3を使用しExcelファイルをJSONデータに変換してみます。

excel2json-3は、ExcelシートをJSONファイルに変換することができます。また、URLからExcelファイルを取得してJSONデータに変換することもできます。

MS Excel 2003(.xls),MS Excel 2007(.xlsx)のタイプのMS Excelファイル形式に対応しています。

excel2json-3ライブラリ・モジュールは、Pythonの標準ライブラリではありませんので、事前にインストールする必要があります。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■excel2json-3をインストールする

excel2json-3をインストールを行いますが、今回はpipを経由してインストールを行うので、まずWindowsのコマンドプロンプトを起動します。

pip install excel2json-3

起動後、上記のコマンドを入力し、Enterキーを押します。

なお、今回は、pythonランチャーを使用しており、Python Version 3.8.5にインストールを行うために、pipを使う場合にはコマンドでの切り替えを行います。

py -3.8 -m pip install excel2json-3

切り替えるために、上記のコマンドを入力し、Enterキーを押します。

Defaulting to user installation because normal site-packages is not writeable
Collecting excel2json-3
Downloading excel2json_3-0.1.6-py3-none-any.whl (7.0 kB)
Requirement already satisfied: requests in c:\users\user_\appdata\roaming\python\python38\site-packages (from excel2json-3) (2.25.1)
Collecting openpyxl
Downloading openpyxl-3.0.7-py2.py3-none-any.whl (243 kB)
|████████████████████████████████| 243 kB 1.3 MB/s
Collecting xlrd
Downloading xlrd-2.0.1-py2.py3-none-any.whl (96 kB)
|████████████████████████████████| 96 kB 1.2 MB/s
Requirement already satisfied: urllib3<1.27,>=1.21.1 in c:\users\user_\appdata\roaming\python\python38\site-packages (from requests->excel2json-3) (1.26.5)
Requirement already satisfied: chardet<5,>=3.0.2 in c:\users\user_\appdata\roaming\python\python38\site-packages (from requests->excel2json-3) (4.0.0)
Requirement already satisfied: idna<3,>=2.5 in c:\users\user_\appdata\roaming\python\python38\site-packages (from requests->excel2json-3) (2.10)
Requirement already satisfied: certifi>=2017.4.17 in c:\users\user_\appdata\roaming\python\python38\site-packages (from requests->excel2json-3) (2021.5.30)
Collecting et-xmlfile
Downloading et_xmlfile-1.1.0-py3-none-any.whl (4.7 kB)
Installing collected packages: et-xmlfile, openpyxl, xlrd, excel2json-3
Successfully installed et-xmlfile-1.1.0 excel2json-3-0.1.6 openpyxl-3.0.7 xlrd-2.0.1

Enterキーを押すと、インストールが開始され、上記のように「Successfully installed」と表示されます。これが表示されれば、excel2json-3が正常にインストールされたことになります。

なお、今回はexcel2json-3のバージョン0.1.6をインストールしました。

■Excelファイルを用意する

インストール後、ExcelファイルをJSONファイルに変換します。その前にExcelファイルを用意します。

今回用意したのは、Googleスプレッドシートで作成した上記の「test.xlsx」というExcelファイルになります。このExcelファイルが保存されている場所は「C:\Users\user_\test(フォルダパス)」です。

■ExcelファイルをJSONファイルに変換する

Excelファイルが用意できましたので、excel2json-3を使用し、ExcelファイルをJSONファイルに変換してみます。

■コード

from excel2json import convert_from_file

Excel_file = r"C:\Users\user_\test\test.xlsx"

convert_from_file(Excel_file)

importでexcel2jsonのconvert_from_fileを呼び出します。その後に、Excel_fileという変数を作成し、その中に「test.xlsx」が保存されている場所を記述し、格納します。

格納後、convert_from_file()関数を使用します。括弧内には引数、パラメーターとしてExcel_file変数を渡します。これでExcelファイルをJSONファイルに変換できます。

■実行

このスクリプトを「excel_json_convert.py」という名前で保存し、コマンドプロンプトから実行してみます。

Excel xlsx file; not supported(Excel xlsxファイル;サポートされていません)
‘NoneType’ object is not iterable(NoneTypeオブジェクトは反復可能ではありません)

実行してみると、上記のメッセージが出力されました。出力後、ExcelファイルをJSONファイルに変換することができませんでした。

変換できない原因を調べると、pip経由でexcel2jsonをインストールした際に、xlrdモジュールのバージョン2.0.1がインストールされており、このモジュールが不具合を起こしているので、バージョンを下げます。

pip install xlrd==1.2.0

今回は、上記のコマンドを入力し、Enterキーを押します。xlrdモジュールのバージョン2.0.1からバージョン1.2.0に変更します。

変更後、再度スクリプトを実行すると、Excelファイルが保存されている場所は「C:\Users\user_\test(フォルダパス)」にjsonファイルが生成されていることが確認できました。

jsonファイルの中身を確認してみると、今回変換した「test.xlsx」のExcelファイルは日本語で記述したもので、変換されたことで、Unicodeエスケープされたバイト列になっていることが確認できました。

Unicodeエスケープされたバイト列を文字列に変換する方法を探してみましたが発見することができませんでした。convert_from_file()関数では、引数,パラメーターとしてエンコーディング(encoding=)を渡すこともできません。変換する方法があれば、今後記載します。

今のところは、jsonファイルに変換する「test.xlsx」のExcelファイルは英語で記述されたものにした方が良い。

コメント

タイトルとURLをコピーしました