送られてきたエクセルファイルなんだけど、
データを既存の別のブックにコピーしたい…。
openpyxlで別のブックにデータをコピーできないの?
できますよ!
できるだけわかりやすく解説いたします!
【著者情報】
Python歴3年。
入社2年目の春に先輩が突然トンズラし、業務を半分肩代わりするハメに…。
今までの1.5倍の仕事をこなせるはずもなく、苦しむ毎日。
業務効率化を模索中にPythonと出合う。
業務とPythonの相性が良く、2倍以上の効率化を実現。現在も効率化を進行中。
openpyxlでデータを別のブックに丸々コピーするには
「iter_rows()」と簡単な「for文」を使います。
まずは実行見本をどうぞ。
実行見本
全コード
ひとまず全コードを網羅します。解説は後ほど行います。
import openpyxl
wb_in = openpyxl.load_workbook('input.xlsx')
ws_in = wb_in['Sheet1']
wb_out = openpyxl.load_workbook('output.xlsx')
ws_out = wb_out['Sheet1']
for row in ws_in.iter_rows():
new_row = [cell.value for cell in row]
ws_out.append(new_row)
wb_in.close
wb_out.save('output.xlsx')
for row in ws_in.iter_rows():
new_row = [cell.value for cell in row]
ws_out.append(new_row)
事前準備
- openpyxlのインストール
既存のエクセルファイルを編集するには「openpyxl」のインストールが必要です。
openpyxlのインストール方法
openpyxlを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install openpyxl
※openpyxlを使用したことがある場合は、このインストール作業は不要です。
インストールに関する詳細や、インストールができなかった場合の対処法は下記記事で解説しております。
また、既存ファイルを開いて保存する方法など、基本解説も行っておりますのでご参考ください。
解説
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
まずはやっていることをざっくり要約します。
import openpyxl
wb_in = openpyxl.load_workbook('input.xlsx')
ws_in = wb_in['Sheet1']
wb_out = openpyxl.load_workbook('output.xlsx')
ws_out = wb_out['Sheet1']
for row in ws_in.iter_rows():
new_row = [cell.value for cell in row]
ws_out.append(new_row)
wb_in.close
wb_out.save('output.xlsx')
3~4行目:コピー元のブック(input.xlsx)を開き、シートを変数に入れる
6~7行目:コピー先の別のブック(output.xlsx)を開き、シートを変数に入れる
9~11行目:「input.xlsx の Sheet1」を「output.xlsx の Sheet1」にコピー
13行目:「input.xlsx」を保存せずに閉じる
15行目:「output.xlsx」を保存して閉じる
9~11行目の詳細は下記記事で解説しております。ご参考ください。
for文については下記記事をご参考ください。
罫線もコピーしたい場合は、下記記事をご参考ください。
うまく動作しない時
エラーが出る
No such file or directory: ○○
これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。
詳しい解説は、下記記事をご参考ください。
Permission denied: ○○
操作しようとしているファイルにアクセスできないというエラーです。
「ファイルを開いている状態なので編集できない」と言っていることが多いので、開いていれば閉じて再度トライしましょう。
詳しい解説は、下記記事をご参考ください。
Worksheet ○○ does not exist
「指定したシートがありません」というエラーです。
指定のシート名が間違っていないか、「sheet1」など先頭が小文字になっていないか確認しましょう。
詳しい解説は、下記記事をご参考ください。
○○ is not defined
今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。
詳しい解説は、下記記事をご参考ください。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
最後に
openpyxlでデータを別のブックに丸々コピーする方法を解説いたしました。
新しいシートを作成し、そのシートにコピーすれば、日々の売り上げ等を蓄積することができます。
必要に応じて試してみてください。
当ブログでは、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
最後までお読みいただき、ありがとうございました。がんばってください!