openpyxlで会議資料を作っているんだけど、強調する文字に下線を引きたい…。
openpyxlで下線を引く方法は無いの?
ありますよ!
では今回は、「openpyxlでセル内の文字に下線を引く方法」を
できるだけわかりやすく解説いたします。
openpyxlでセル内の文字に下線を引く方法
「underline」を使います。まずは全コードと実行結果をお見せします。
解説は後ほど行います。
全コード
import openpyxl
from openpyxl.styles import Font
wb = openpyxl.load_workbook('C://Utatane/input.xlsx')
ws = wb['Sheet1']
ws['A1'].font = Font(underline='single')
wb.save('C://Utatane/output.xlsx')
ws['A1'].font = Font(underline='single')
実行結果
事前準備
- openpyxlのインストール
既存のエクセルファイルを編集するには「openpyxl」のインストールが必要です。
openpyxlのインストール方法
openpyxlを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install openpyxl
※openpyxlを使用したことがある場合は、このインストール作業は不要です。
インストールに関する詳細や、インストールができなかった場合の対処法は下記記事で解説しております。
また、既存ファイルを開いて保存する方法など、基本解説も行っておりますのでご参考ください。
解説
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
まずはインポートの解説です。
import openpyxl
from openpyxl.styles import Font
上記コードにて、「openpyxl」および下線を引くのに必要な「Font」スタイルをインポートしています。
特に2行目を書かないと下線を引くことはできませんので、忘れず記述してください。
2行目は大文字小文字が混在していまず。ご注意ください。
全て小文字にすると動きません。
次に本題の下線を引くコードの解説です。
ws['A1'].font = Font(underline='single')
上記一文にて、セル内の文字に下線を引いています。
今回は「A1セル」に「シングル(1本)」の下線を引きました。
【コードの解説】
ワークシートが入った変数に続けて「[].font」を書きます。
[]内に、下線を引きたいセル名を書いてください。
【注意点】
セル名は必ず「’(クォーテーション)」で囲ってください。
囲わないと動きません。
イコールを書いたら、「Font()」を書きます。
()内に「underline=’single’」を書いて完了です。
【注意点】
Font()の先頭は必ず大文字の「F」にしてください。
小文字にすると動きません。
これで「A1」セルに「1本の下線」を引くことができます。
シングルアンダーラインをA1セルのfontに適用するような処理だと思ってください。
人間でいうところの、「腕時計を腕にはめる」「イヤホンを耳につける」といったところでしょうか。
二重の下線を引きたい場合は、下記コードのように「single」を「double」に変えてください。
ws['A1'].font = Font(underline='double')
また、既に下線が入っているセルを「下線なし」にしたい場合は、「None」にします。
ws['A1'].font = Font(underline=None)
【注意点】
「None」はクォーテーションで囲わないでください。
囲うと動きません。
ややこしいですが、「Noneは例外」と覚えてください。
ここまで、「下線を引く方法」や「下線を削除する方法」を解説いたしました。
次項では、引かれた下線を別のブックにコピーする方法を解説いたします。
元データと書式を似せたりする場合に便利ですので、ご活用ください。
下線を取得して別ブックにコピーする方法
下記コードにて、「input.xlsx」のA1セルに引かれた下線のみを、「output.xlsx」のA1セルにコピーすることができます。
下線のみですので、文字や他の書式はコピーされません。
元データと書式を似せたいけど、全く同じにしたくない場合に便利かと思います。
▼input.xlsx
▼output.xlsx(実行前)
import openpyxl
from openpyxl.styles import Font
wb_in = openpyxl.load_workbook('C://Utatane/input.xlsx')
ws_in = wb_in['Sheet1']
wb_out = openpyxl.load_workbook('C://Utatane/output.xlsx')
ws_out = wb_out['Sheet1']
ws_in_a1_font = ws_in['A1'].font
ws_out['A1'].font = Font(underline = ws_in_a1_font.underline)
wb_out.save('C://Utatane/output.xlsx')
ざっくりですが、解説いたします。
【コード4・5行目】
コピー元のブック・シートを取得
【コード7・8行目】
コピー先のブック・シートを取得
【コード10行目】
コピー元のA1セルのフォント情報を取得し、ひとまず変数に入れる
【コード12行目】
10行目で取得したフォント情報の中から、下線の設定のみをコピー先のA1セルに適用
これで下線のみコピーできます。
その他の書式もコピーしたい場合は、下記記事をご参考ください。
うまく動作しない場合の対処法
エラーが出る
No such file or directory: ○○
これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。
詳しい解説は、下記記事をご参考ください。
Permission denied: ○○
操作しようとしているファイルにアクセスできないというエラーです。
「ファイルを開いている状態なので編集できない」と言っていることが多いので、開いていれば閉じて再度トライしましょう。
詳しい解説は、下記記事をご参考ください。
Worksheet ○○ does not exist
「指定したシートがありません」というエラーです。
指定のシート名が間違っていないか、「sheet1」など先頭が小文字になっていないか確認しましょう。
詳しい解説は、下記記事をご参考ください。
○○ is not defined
今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。
詳しい解説は、下記記事をご参考ください。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
最後に
openpyxlでセル内の文字に下線を引く方法を解説いたしました。
当ブログでは、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
挫折せずにPythonを独学で学習する方法は特におすすめです。
最後までお読みいただき、ありがとうございました。がんばってください!