xlwingsでエクセルを編集しているんだけど、
罫線を引いて表っぽくしたい…。
なるほど…。
では今回は、「xlwingsでセルに罫線を引く方法」を
できるだけわかりやすく解説いたします。
また、「線の種類」「線の太さ」「線の色」
を変える方法も紹介いたします!
xlwingsでセルに罫線を引くには
「Borders」を使います。まずは実行見本をどうぞ。
実行見本
全コード
ひとまず全コードを網羅します。解説は後ほど行います。
import xlwings
workbook = xlwings.books.active
worksheet = workbook.sheets.active
worksheet['B2'].api.Borders(8).LineStyle = 1
worksheet['B2'].api.Borders(8).LineStyle = 1
xlwingsの処理は、予想以上に時間がかかることがあります。
プログラムの最後に「print(‘実行完了’)」などを追記し、完了したのを確認してから結果を見ましょう。
事前準備
- xlwingsのインストール
エクセルファイルを実際に操作するには、「xlwings」のインストールが必要になります。
xlwingsのインストール方法
xlwingsを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install xlwings
※xlwingsを使用したことがある場合は、このインストール作業は不要です。
インストール方法詳細やインストールができない場合の対処法、
基本的な使い方などは下記記事をご参考ください。
解説
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
インポート~シートの取得
import xlwings
workbook = xlwings.books.active
worksheet = workbook.sheets.active
上記コードにて、「xlwingsのインポート」「アクティブブック・アクティブシートの取得」をしています。
詳細は「アクティブシートの取得」の記事をご覧ください。
罫線を引く
worksheet['B2'].api.Borders(8).LineStyle = 1
上記一文にて、セルに罫線を引くことができます。
今回の場合は、「B2セル」の「上側」に「実線」が引かれます。
「Borders」や「LineStyle」など、大文字小文字が混在していますが、このまま記述してください。
全て小文字にすると正常に動きません。
()内の数字:罫線を引く位置を指定(セルの上側や右側など)
右辺の数字:線の種類を指定(実践や点線など)
(詳細は次項で解説)
<テンプレ>
【 シートが入った変数[‘罫線を引くセル名’].api.Borders(罫線の位置).LineStyle = 線種 】
いろいろな設定
前項で少し触れたものもありますが、下記の3つを解説いたします。
- 罫線の位置
- 罫線の種類
- 罫線の色
罫線の位置
worksheet['B2'].api.Borders(8).LineStyle = 1
()内の数字にて、罫線を引く位置を指定できます。
- 7:セルの左側
- 8:セルの上側
- 9:セルの下側
- 10:セルの右側
#左側
worksheet['B3'].api.Borders(7).LineStyle = 1
#上側
worksheet['C2'].api.Borders(8).LineStyle = 1
#下側
worksheet['C4'].api.Borders(9).LineStyle = 1
#右側
worksheet['D3'].api.Borders(10).LineStyle = 1
下記のように記述することで、B2セルの外周に罫線を引くことができます。
worksheet['B2'].api.Borders(7).LineStyle = 1
worksheet['B2'].api.Borders(8).LineStyle = 1
worksheet['B2'].api.Borders(9).LineStyle = 1
worksheet['B2'].api.Borders(10).LineStyle = 1
斜線を引く
()内の数字を「5」や「6」にすることで、斜線を引くこともできます。
#右下がり斜線
worksheet['B2'].api.Borders(5).LineStyle = 1
#右上がり斜線
worksheet['C2'].api.Borders(6).LineStyle = 1
罫線の種類
点線にしたり、線を太くしたりすることもできます。
worksheet['B2'].api.Borders(8).LineStyle = 1
線のスタイル
線のスタイルは右辺の数字で指定します。
- 1:実線
- 2:破線(ーーーー)
- 3:点線(・・・・)
- 4:一点鎖線
- 5:二点鎖線
- None:なし
#実線
worksheet['A2'].api.Borders(8).LineStyle = 1
#破線
worksheet['B2'].api.Borders(8).LineStyle = 2
#点線
worksheet['C2'].api.Borders(8).LineStyle = 3
#一点鎖線
worksheet['D2'].api.Borders(8).LineStyle = 4
#二点鎖線
worksheet['E2'].api.Borders(8).LineStyle = 5
#なし
worksheet['G2'].api.Borders(8).LineStyle = None
線の太さ
線の太さを変えたい場合は、下記コードを追記してください。
worksheet['B2'].api.Borders(8).Weight = 2
前項までのコードと比べて、「LineStyle」が「Weight」に変わっただけです。
()内の数字も同じ性質です。
<テンプレ>
【 シートが入った変数[‘罫線を引くセル名’].api.Borders(罫線の位置).Weight = 線の太さ 】
違うのは右辺の数字が何に対応するかです。
- 1:極細線
- 2:細線
- 3:中太線
- 4:太線
#極細線
worksheet['A2'].api.Borders(8).Weight = 1
#細線
worksheet['B2'].api.Borders(8).Weight = 2
#中太線
worksheet['C2'].api.Borders(8).Weight = 3
#太線
worksheet['D2'].api.Borders(8).Weight = 4
スタイルと太さを組み合わせる
「LineStyle」と「Weight」を組み合わせることで、「太い破線」を引くこともできます。
worksheet['B2'].api.Borders(8).LineStyle = 2
worksheet['B2'].api.Borders(8).Weight = 3
罫線の色
罫線の色を変えたい場合は、下記コードを追記してください。
worksheet['B2'].api.Borders(8).Color = 0xFF0000
右辺に何やら暗号が書かれていますね…。
まずは左辺ですが、前項までと比べて「Color」の部分が変わっただけです。
これで罫線の色が指定できます。
そして右辺の暗号ですが、「色を指定する値」だと思ってください。
この場合は「赤色」の罫線が引かれます。
#赤色
worksheet['B2'].api.Borders(8).Color = 0xFF0000
#緑色
worksheet['B2'].api.Borders(8).Color = 0x00FF00
#青色
worksheet['B2'].api.Borders(8).Color = 0x0000FF
<テンプレ>
【 シートが入った変数[‘罫線を引くセル名’].api.Borders(罫線の位置).Color = 線の色 】
右辺の値と線の色には法則があるのですが、説明すると長くなるので割愛します。
ひとまずは上記3つでまかなえるかと思います。
慣れたら「0x00FFFF」など値を変えて結果をチェックしてみてください。
うまく動作しない時
エラーが出る
No such file: ○○
これは、読み込むファイルが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。
‘NoneType’ object has no attribute ‘books’
エクセルブックやエクセルファイルを開いていないのに、ブックやファイルを取得しようとした場合に出るエラーです。
事前に対象のファイルを開くように指定するなど、構文を見直してみましょう。
○○ is not defined
今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。
詳しい解説は、下記記事をご参考ください。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
空のブックが生成される・残る
作業環境によっては「空のブック(Book1)」が生成されたり、残ってしまう場合があります。
このまま作業を続けると、空のブックがどんどん増えていく可能性があるため対処が必要です。
対処法としましては、何か別のエクセルを開いたままにしておきましょう。
そうすることで、空のブックは生成されません。
作業を始める前に、適当なエクセルファイルをひとつ開いておくことをおすすめします。
いつまでたっても実行されない
エラーは出ていないのに、いつまでたっても実行されない場合は、実行内容がエクセルに届いていない可能性があります。
「books.active」「sheets.active」を使用していて、エクセルファイルが最小化されていると、実行内容がエクセルに届かない場合があります。(もう1度実行すると、同じ内容が2回実行される)
エクセルは最小化せず、コードエディタとエクセルを並べて表示させた状態で実行するとうまくいきやすいです。
最後に
xlwingsでセルに罫線を引く方法を解説いたしました。
当ブログでは、xlwingsやopenpyxlなど、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
挫折せずにPythonを独学で学習する方法は特におすすめです。
最後までお読みいただき、ありがとうございました。がんばってください!