Python で Excel の作業を自動化しようと思った際、openpyxl を使うと思います。
ただ、このopenpyxl のライブラリは .xlsbのファイルに対応していません。ただ、どうしてもxlsbのファイルを用いなければならない場合、どうすればよいのでしょうか。
それは、
Pythonで.xlsbから.xlsxに変換をし、保存をしてその.xlsxファイルを操作すればよいのです。
xlsbからxlsx にPythonで自動変換できるコードは以下になります。
今回は、PandasとPyxlsbのライブラリを用います。ひとつひとつ解説していきます。
ただ、このopenpyxl のライブラリは .xlsbのファイルに対応していません。ただ、どうしてもxlsbのファイルを用いなければならない場合、どうすればよいのでしょうか。
それは、
Pythonで.xlsbから.xlsxに変換をし、保存をしてその.xlsxファイルを操作すればよいのです。
xlsbからxlsx にPythonで自動変換できるコードは以下になります。
from pyxlsb import open_workbook as open_xlsb
import pandas as pd
df = pd.read_excel('data/src/sample.xlsb', engine='pyxlsb')
df.to_excel('data/src/sample.xlsx', index=False)
今回は、PandasとPyxlsbのライブラリを用います。ひとつひとつ解説していきます。
df = pd.read_excel('ファイルの位置', engine='pyxlsb')
df.to_excel('ファイルの位置', index=False)
pd.read_excelにおいては、はじめにファイルの位置を指定しその後エンジンとして pyxlsbというものを追加します。
もしシートの指定がしたければ sheet_name = を()の中に追加すればよいです。このシートを指定しなければ、通常、はじめのSheet1のみ変換されます。すべてのxlsbのシートを変換したい場合、普通は sheet_name = None にすればよいのですが、やってみたところエラーが出てしまいます。複数のシートを変換したい場合は、dfを複数つくってみて、それぞれに異なるsheet_nameをつけてやれば良いでしょう。(他にいい方法があればコメントでお知らせください)
次にpandasで読み込んだエクセルの xlsb ファイルを今度は xlsx に変換してみましょう。.to_excelで変換することができます。この際 index = False というのを入れることを忘れないようにしましょう。というのも、もしこれを忘れると、変換したxlsxファイルのはじめの A 列にインデックス番号が表示されてしまいます。このインデックスナンバーによって、元の xlsb ファイルと次の変換された xlsx ファイルとの見た目が変わってしまうのです。それを防ぐためにFalseを入れています。
以上がxlsbファイルをxlsxファイルにPythonで変換する方法でした!