openpyxlを使って、既存のエクセルファイルに書き込みをしたい!
そんなお悩みを、Python歴3年の私ができるだけわかりやすく解説し、解決に導きます。
openpyxlで既存のエクセルファイルに書き込み保存するには
「.value」を使います。まずは実行見本をどうぞ。
実行見本
全コード
ひとまず全コードを網羅します。解説は後ほど行います。
import openpyxl
wb = openpyxl.load_workbook('input.xlsx')
ws = wb['Sheet1']
#ws = wb.worksheets[0]
ws['A1'].value = 'aaaaa'
c4 = 'ccccc'
ws['C4'].value = c4
wb.save('output.xlsx')
事前準備
- openpyxlのインストール
既存のエクセルファイルを編集するには「openpyxl」のインストールが必要です。
openpyxlのインストール方法
openpyxlを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install openpyxl
※openpyxlを使用したことがある場合は、このインストール作業は不要です。
インストールができなかった場合や、openpyxlの基本的な使い方は下記記事で解説しております。ご参考ください。
解説
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
openpyxlのインポートなどの基礎解説
openpyxlを使うにはインポートが必要です。
インポートなど基本的な使い方は下記記事で解説しております。ご参考ください。
書き込む
下記は、文字を書き込むコードです。
ws['A1'].value = 'aaaaa'
「A1」はセルの「A1」を意味します。
【 ワークシートを入れた変数[‘書き込みたいセル名’].value = ‘書き込みたい文字列や数値’ 】
※数値を書き込む場合、右辺の「’(クォーテーション)」は不要です
( 例:ws[‘A1’].value = 1 )
変数に入った文字や数字をセルに書き込むこともできます。
c4 = 'ccccc'
ws['C4'].value = c4
上記は、「ccccc」という文字列を「c4」という変数に入れ、その変数をセルの「C4」に書き込むよう指定したものです。
実行結果は冒頭の実行見本をご覧ください
日付を書き込む方法は、下記記事で解説しております。
セルの指定方法ですが、下記のようなものもあります。
ws.cell(row=1, column=1).value = 'aaaaa'
この方法でも、セルA1に「aaaaa」を書き込むことができます。
()内の「row=1」は1行目、「column=1」は1列目(A列)を指定したことになり、結果「セルA1」に値を書き込むことができます。
うまく動作しない時
エラーが出る
No such file or directory: ○○
これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。
詳しい解説は、下記記事をご参考ください。
Permission denied: ○○
操作しようとしているファイルにアクセスできないというエラーです。
「ファイルを開いている状態なので編集できない」と言っていることが多いので、開いていれば閉じて再度トライしましょう。
詳しい解説は、下記記事をご参考ください。
Worksheet ○○ does not exist
「指定したシートがありません」というエラーです。
指定のシート名が間違っていないか、「sheet1」など先頭が小文字になっていないか確認しましょう。
詳しい解説は、下記記事をご参考ください。
○○ is not defined
今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。
詳しい解説は、下記記事をご参考ください。
list index out of range
規定を超える部分を操作しようとした時に出るエラーです。
今回の場合では、実際にないSheet3(シート番号2)などを指定した場合にも起こります。
ファイルとコードを再確認しましょう。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
まとめ
openpyxlで既存のエクセルファイルに文字を書き込みする方法を解説いたしました。
かなり便利で使える手法ですので、ぜひ覚えて活用してみてください。
当ブログでは、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
最後までお読みいただき、ありがとうございました。がんばってください!