【まとめ】Pythonのopenpyxlで行うExcelの基本操作
Pythonの勉強を再開し、Excelを操作して自動化させるべく色々と進めています。
使用本は、『退屈なことはPythonにやらせよう〜』、私が購入したのは初版第1刷で2017年発刊分です。
Githubの方にある正誤表の中身を本に書き写しておきます。
この本の12章がExcelに関することで、ここを中心に、わからない場合は他の章を参照して進めています。
私の環境は、Ubuntuの公式Docker ImageにPythonやopenpyxl、JupyterLabをインストールして、Pythonの結果が随時確認できるようにしています。詳細は、拙ブログ『【まとめ】MacでPythonのGUIライブラリが使えるDockerの設定方法』にまとめています。
- マシン:MacBook Pro
- OS:macOS Catalina(10.15.7)
- 仮想環境:Docker Desktop
- エディタ:JupyterLab
- Python:Ver.3.8.2
- openpyxl:Ver.3.0.5
Excelを操作するといいながら、以下の画像はGoogleスプレッドシートです。ファイルは拡張子「.xlsx」で保存すれば、Excelが無くてもPythonで操作が可能で、GoogleスプレッドシートでもOpenOfficeで開きますので確認も可能です。
そんな中、Excelを操作する基本的なコードを備忘録としてまとめました。
#openpyxlモジュールを使用する import openpyxl #新規Excelファイルを開く wb=openpyxl.Workbook() #このExcelを保存する wb.save('example_copy.xlsx')
#新規ファイルのシート名を確認する wb.sheetnames #シート名は「Sheet」の1シートのみある状態 #シート「Sheet」を指定する wb['Sheet'] #シート名を取得する wb['Sheet'].title #シート「Sheet」のシート名を変更する wb['Sheet'].title='Example 1' #シート名を確認する wb.sheetnames #シート名は「Example 1」に変更された
#シートを追加する wb.create_sheet() #シート名を確認する wb.sheetnames #シート「Sheet」が、「Example 1」の次に追加された
#シート名(Example 3)とシートの順番(3番目、'Sheet'の次)を指定してシートを追加する #シートの順番は0が1番目、1が2番目、2が3番目となる wb.create_sheet(title='Example 3',index=2) #シート名を確認する wb.sheetnames #シート「Example 3」が、「Sheet」の次に追加された
#シート「Sheet」のシート名を変更する wb['Sheet'].title='Example 2' #シート名を確認する wb.sheetnames #シート名は「Example 2」に変更された #シートは順に、「'Example 1', 'Example 2', 'Example 3'」となっているはず
#シート「Example 3」を削除する その1 wb.remove(wb['Example 3']) #シート名を確認する wb.sheetnames #シートは順に、「'Example 1', 'Example 2'」となっているはず #シート「Example 3」を削除する その2 del wb['Example 3'] #シート名を確認する wb.sheetnames #シートは順に、「'Example 1', 'Example 2'」となっているはず
#アクティブなシートを確認する wb.active #大体順序が早いシートになる。今は「'Example 1'」となる。 #セルを特定する wb['Example 1']['A1'] #「Example 1」シートの「A1」セルを指定した #セル「A1」に値を書き込む wb['Example 1']['A1']='This is a pen.' #セル「A1」の値を見てみる wb['Example 1']['A1'].value #「This is a pen.」と出るはず
#セル「A1」の値を上書きする wb['Example 1']['A1']='Hello' #セル「A1」の値を見てみる wb['Example 1']['A1'].value #「Hello」に変わっているはず
#セル「A1」の行番号 wb['Example 1']['A1'].row #行番号は1 #セル「A1」の列番号 wb['Example 1']['A1'].column #列番号は1 #セル「A1」の列番号を文字に変換する get_column_letter(wb['Example 1']['A1'].column) #列文字「A」 #セル「A1」の列文字を番号に変換する column_index_from_string('A') #列番号「1」 #セル「A1」のセル名 wb['Example 1']['A1'].coordinate #セル名「A1」 #セルを行番号と列番号で指定 wb['Example 1'].cell(row=1,column=1) #「Example 1」シートの「A1」セルが指定された #セルを行番号と列番号で指定してセルの値を見る wb['Example 1'].cell(row=1,column=1).value #「Example 1」シートの「A1」セルの値「Hello」と出る #このExcelを保存する wb.save('example_copy.xlsx') #「'Example 1', 'Example 2'」の2つのシートがあり、 #シート「Example 1」の「A1」セルに「Hello」と入力された #「example_copy.xlsx」が保存された
その他の操作方法については、
に詳しいので、ぜひご覧ください。
コメント
コメントを投稿