xlwingsでエクセルにデータをまとめたんだけど、
タイトルだけ文字を中央揃えにしたい。
なるほど…。
では今回は、「xlwingsで文字位置を中央揃えにする方法」を
できるだけわかりやすく解説いたします!
xlwingsで文字位置を中央揃えにするには
「HorizontalAlignment」を使います。まずは実行見本をどうぞ。
実行見本
全コード
ひとまず全コードを網羅します。解説は後ほど行います。
import xlwings
workbook = xlwings.books.active
worksheet = workbook.sheets.active
worksheet['A1'].api.HorizontalAlignment = xlwings.constants.HAlign.xlHAlignCenter
worksheet['A1'].api.HorizontalAlignment = xlwings.constants.HAlign.xlHAlignCenter
xlwingsの処理は、予想以上に時間がかかることがあります。
プログラムの最後に「print(‘実行完了’)」などを追記し、完了したのを確認してから結果を見ましょう。
事前準備
- xlwingsのインストール
エクセルファイルを実際に操作するには、「xlwings」のインストールが必要になります。
xlwingsのインストール方法
xlwingsを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install xlwings
※xlwingsを使用したことがある場合は、このインストール作業は不要です。
インストール方法詳細やインストールができない場合の対処法、
基本的な使い方などは下記記事をご参考ください。
解説
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
インポート~シートの取得
import xlwings
workbook = xlwings.books.active
worksheet = workbook.sheets.active
上記コードにて、「xlwingsのインポート」「アクティブブック・アクティブシートの取得」をしています。
詳細は「アクティブシートの取得」の記事をご覧ください。
中央揃えにする
worksheet['A1'].api.HorizontalAlignment = xlwings.constants.HAlign.xlHAlignCenter
上記一文にて、セル内の文字位置を中央揃えにすることができます。
「HorizontalAlignment」と「HAlign」は水平方向の設定のことで、
「xlHAlignCenter」は水平方向の中央揃えを意味します。
少し長くて理解しにくいですが、呪文のようなものだと思ってください。
大文字小文字が混在していますが、このまま記述をお願いします。全て小文字だと動かなくなります。
使う時は上記コードをテンプレとして、「worksheet[‘A1’]」の部分だけを変えることをおすすめします。
垂直方向も中央揃えにするには
前項で解説した中央揃えは、水平方向に対するものでした。
垂直方向に対して中央揃えにする方法も紹介いたします。
worksheet['A1'].api.VerticalAlignment = xlwings.constants.VAlign.xlVAlignCenter
前項から変わったのは下記の2点です。
- 「HorizontalAlignment」→「VerticalAlignment」:垂直方向の設定
- 「HAlign」→「VAlign」:垂直方向
- 「xlHAlignCenter」→「xlVAlignCenter」:垂直方向の中央揃え
実行してみます。
垂直方向も中央揃えになりました。
文字の配置いろいろ
中央揃えだけではなく、他の配置も紹介いたします。
おさらいも含めてまとめてみました。
水平方向
まずは水平方向の文字位置です。
#左
worksheet['A1'].api.HorizontalAlignment = xlwings.constants.HAlign.xlHAlignLeft
#中央
worksheet['A2'].api.HorizontalAlignment = xlwings.constants.HAlign.xlHAlignCenter
#右
worksheet['A3'].api.HorizontalAlignment = xlwings.constants.HAlign.xlHAlignRight
それぞれの違いは、コード末尾の「Left」「Center」「Right」だけです。
大文字小文字に注意しましょう。
垂直方向
続いて垂直方向の文字位置です。
#上
worksheet['A1'].api.VerticalAlignment = xlwings.constants.VAlign.xlVAlignTop
#中央
worksheet['B1'].api.VerticalAlignment = xlwings.constants.VAlign.xlVAlignCenter
#下
worksheet['C1'].api.VerticalAlignment = xlwings.constants.VAlign.xlVAlignBottom
それぞれの違いは、こちらもコード末尾の「Top」「Center」「Bottom」だけです。
うまく動作しない時
エラーが出る
‘NoneType’ object has no attribute ‘books’
エクセルブックやエクセルファイルを開いていないのに、ブックやファイルを取得しようとした場合に出るエラーです。
事前に対象のファイルを開くように指定するなど、構文を見直してみましょう。
○○ is not defined
今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。
詳しい解説は、下記記事をご参考ください。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
空のブックが生成される・残る
作業環境によっては「空のブック(Book1)」が生成されたり、残ってしまう場合があります。
このまま作業を続けると、空のブックがどんどん増えていく可能性があるため対処が必要です。
対処法としましては、何か別のエクセルを開いたままにしておきましょう。
そうすることで、空のブックは生成されません。
作業を始める前に、適当なエクセルファイルをひとつ開いておくことをおすすめします。
いつまでたっても実行されない
エラーは出ていないのに、いつまでたっても実行されない場合は、実行内容がエクセルに届いていない可能性があります。
「books.active」「sheets.active」を使用していて、エクセルファイルが最小化されていると、実行内容がエクセルに届かない場合があります。(もう1度実行すると、同じ内容が2回実行される)
エクセルは最小化せず、コードエディタとエクセルを並べて表示させた状態で実行するとうまくいきやすいです。
最後に
xlwingsでセル内の文字位置を中央揃えにする方法を解説いたしました。
当ブログでは、xlwingsやopenpyxlなど、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
挫折せずにPythonを独学で学習する方法は特におすすめです。
最後までお読みいただき、ありがとうございました。がんばってください!