openpyxlでエクセルファイルを編集しているんだけど、
セル内の文字に追記したい…。
例えばA1セルに元々ある「おはよう」に「ございます」
を追記して「おはようございます」にできないの?
なるほど…。
では今回は、「openpyxlでセル内の文字に追記する方法」を
できるだけわかりやすく解説いたします。
また、「追加した文字を削除して元に戻す方法」も
解説いたしますので、ぜひ最後まで読んでいってください。
openpyxlでセル内の文字に追記する方法
「.value」で文字を取得し、「+」でつなげます。
まずは全コードと実行結果をご覧ください。解説は後ほど行います。
全コード
import openpyxl
wb = openpyxl.load_workbook('input.xlsx')
ws = wb['Sheet1']
ws['A1'].value = ws['A1'].value + 'ございます'
wb.save('output.xlsx')
ws['A1'].value = ws['A1'].value + 'ございます'
実行結果
事前準備
- openpyxlのインストール
既存のエクセルファイルを編集するには「openpyxl」のインストールが必要です。
openpyxlのインストール方法
openpyxlを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install openpyxl
※openpyxlを使用したことがある場合は、このインストール作業は不要です。
インストールに関する詳細や、インストールができなかった場合の対処法は下記記事で解説しております。
また、既存ファイルを開いて保存する方法など、基本解説も行っておりますのでご参考ください。
解説
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
追記する方法
ws['A1'].value = ws['A1'].value + 'ございます'
「ワークシートが入った変数」と「指定するセル」に続けて「.value」を書きます。
「=」の後に全く同じ記述をしたら、「+」を書きます。
「+」の後に「追記したい文字」を書いて完了です。
※「追記したい文字」は「’(シングルクォーテーション)」で囲ってください
右辺の「ws[‘A1’].value」で、「A1セル」の文字(値)を取得します。
「取得できた文字」と「追記する文字」を「+」でつなげることができます。
左辺には、つなげた文字を入れるセルを指定します。
今回は再度A1セルに入れています。
セル指定の方法(別案)
ws.cell(row=1, column=1).value = ws.cell(row=1, column=1).value + 'ございます'
前項と書き方が少し違いますが、前項と同じ「A1セル」に文字を追記する構文です。
指定方法の詳細は下記記事をご参考ください。
「row=1」や「column=1」の数字の部分は、変数で代用することもできます。
ws.cell(row=row_num, column=col_num).value = ws.cell(row=row_num, column=col_num).value + 'ございます'
これにより、for文やif文を使って「row_num」などの値を増減して複数のセルに追記することもできます。
追記する際の注意点
「セルに元々入っている文字」と「追記する文字」のどちらかが「数値」の場合は注意が必要です。
型違いにより下図のようなエラーが出ます。
これは文字列と数値はつなげることができないというエラーで、詳細は下記記事をご参考ください。
「セルに元々入っている文字」か「追記する文字」のどちらかが「数字のみ」の場合は、下記のように対処してください。
【セルに元々入っている文字が数字のみの場合】
str型に変換する必要があります。
右辺で取得した値をstr()で囲ってください。
ws['A1'].value = str(ws['A1'].value) + 'ございます'
【追記する文字が数字のみの場合】
「’(シングルクォーテーション)」で囲うことで対処できます。
ws['A1'].value = ws['A1'].value + '12345'
両方とも数値だった場合、エラーは出ません。
しかしながら、「数値」+「数値」ということで、計算が行われてしまいます。
意図しない結果にならないように注意しましょう。
対処法は上記の方法を両方行ってください。
文字を削除して元に戻す方法
誤って追記をしてしまった場合のために、文字を削除する方法も紹介いたします。
今回は「おはようございます」を「おはよう」にする方法を見ていきましょう。
import openpyxl
wb = openpyxl.load_workbook('input.xlsx')
ws = wb['Sheet1']
ws['A1'].value = ws['A1'].value.replace('ございます', '')
wb.save('output.xlsx')
前項と比べて、6行目の右辺が違います。
A1セルの文字を取得する記述をしたら、続けて「.replace()」を書きます。
「replace」の詳細は下記記事をご参考ください。
「.replace()」の()内に「’削除する文字’」「,(カンマ)」「”」の順で記述して完了です。
これで「ございます」を削除することができます。
うまく動作しない場合の対処法
エラーが出る
unsupported operand type(s) for +: ‘int’ and ‘str’
「TypeError: unsupported operand type(s) for +: ‘int’ and ‘str’」は、「セルに元々入っている文字」か「追記する文字」のどちらかが「数値」の場合に起きるエラーです。
「追記する際の注意点」の項を参考に対処してみてください。
No such file or directory: ○○
これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。
詳しい解説は、下記記事をご参考ください。
Permission denied: ○○
操作しようとしているファイルにアクセスできないというエラーです。
「ファイルを開いている状態なので編集できない」と言っていることが多いので、開いていれば閉じて再度トライしましょう。
詳しい解説は、下記記事をご参考ください。
Worksheet ○○ does not exist
「指定したシートがありません」というエラーです。
指定のシート名が間違っていないか、「sheet1」など先頭が小文字になっていないか確認しましょう。
詳しい解説は、下記記事をご参考ください。
○○ is not defined
今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。
詳しい解説は、下記記事をご参考ください。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
最後に
openpyxlでセル内の文字に追記する方法を解説いたしました。
当ブログでは、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
挫折せずにPythonを独学で学習する方法は特におすすめです。
最後までお読みいただき、ありがとうございました。がんばってください!