他の人が作ったエクセルの表をもらったんだけど、
セル内の文字が「左揃え&下付き」になっていて見づらい…。
エクセルのデフォルト設定がこうなっているからかもしれないけど、
Pythonでセル内の文字を中央揃えにする方法は無いのかな?
あります!
縦位置も中央揃えにしたり、右下に配置する方法も解説いたします!
Pythonでエクセル内の文字を中央揃えにする方法を、
Python歴3年の私ができるだけわかりやすく解説し、解決に導きます。
Pythonでエクセル内の文字を中央揃えにするには
「Alignment()」を使用します。まずは実行見本をどうぞ。
実行見本
全コード
ひとまず全コードを網羅します。解説は後ほど行います。
いろんなパターンを網羅しているため長いですが、本題は短いです。
import openpyxl
from openpyxl.styles.alignment import Alignment
wb = openpyxl.load_workbook('input.xlsx')
ws = wb['Sheet1']
left_top = Alignment(horizontal='left',vertical='top')
left_center = Alignment(horizontal='left',vertical='center')
left_bottom = Alignment(horizontal='left',vertical='bottom')
center_top = Alignment(horizontal='center',vertical='top')
center_center = Alignment(horizontal='center',vertical='center')
center_bottom = Alignment(horizontal='center',vertical='bottom')
right_top = Alignment(horizontal='right',vertical='top')
right_center = Alignment(horizontal='right',vertical='center')
right_bottom = Alignment(horizontal='right',vertical='bottom')
ws['A1'].alignment = left_top
ws['A2'].alignment = left_center
ws['A3'].alignment = left_bottom
ws['B1'].alignment = center_top
ws['B2'].alignment = center_center
ws['B3'].alignment = center_bottom
ws['C1'].alignment = right_top
ws['C2'].alignment = right_center
ws['C3'].alignment = right_bottom
wb.save('input.xlsx')
from openpyxl.styles.alignment import Alignment
center_center = Alignment(horizontal=’center’,vertical=’center’)
ws[‘B2’].alignment = center_center
事前準備
- openpyxlのインストール
既存のエクセルファイルを編集するには「openpyxl」のインストールが必要です。
openpyxlのインストール方法
openpyxlを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install openpyxl
※openpyxlを使用したことがある場合は、このインストール作業は不要です。
解説
インポート
>>1.import openpyxl
>>2.from openpyxl.styles.alignment import Alignment
「openpyxl」のインポートと、文字を中央揃えにするために、上記2行を記述します。
文字の位置を変数に代入
>>11.center_center = Alignment(horizontal=’center’,vertical=’center’)
ひとまず、文字の位置を変数に代入しています。
【 変数 = Alignment(horizontal=’横の位置‘,vertical=’縦の位置‘) 】
文字の位置について
文字の位置を指定するのは下記の2つです。
- horizontal:横の位置【 left(左揃え)、center(中央揃え)、right(右揃え) 】
- vertical:縦の位置【 top(上詰め)、center(中央揃え)、bottom(下詰め) 】
「Alignment(horizontal=’center‘,vertical=’bottom‘)」と指定した場合は、
中央揃えの下詰めに表示されます。
※デフォルトは「横:左揃え、縦:下詰め」です。
文字の位置をセルへ反映
>>21.ws[‘B2’].alignment = center_center
左辺の「ws[‘B2’].alignment」は、「wsのセルB2の文字位置を変更」という意味です。
(文字位置を変更する際は「.alignment」を付けてください)
右辺の「center_center」は前項で文字位置の情報を代入した変数です。
したがって、この一文で「wsのセルB2の文字位置をcenter_center(縦横中央揃えの位置)に変更」という処理になります。
【 ワークシート変数[‘セル名‘].alignment = 文字位置を代入した変数 】
少し難しくなりますが、表全体の文字を中央揃えにする方法もあります。
下記記事にて詳しく解説しておりますので、気になる方はご覧ください。
その他の解説
既存ファイルを開いて保存する方法などの操作の基本解説は、下記記事で行っております。
ご参考ください。
うまく動作しない時
エラーが出る
No such file or directory: ○○
これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。
Permission denied: ○○
操作しようとしているファイルにアクセスできないというエラーです。
「ファイルを開いている状態なので編集できない」と言っていることが多いので、開いていれば閉じて再度トライしましょう。
開いていなければ、コンピューターを再起動して再度トライしてみましょう。
Worksheet ○○ does not exist
「指定したシートがありません」というエラーです。
指定のシート名が間違っていないか、「sheet1」など先頭が小文字になっていないか確認しましょう。
○○ is not defined
今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
まとめ
Pythonでエクセル内の文字を中央揃えにする方法を解説いたしました。
- from openpyxl.styles.alignment import Alignment
- center_center = Alignment(horizontal=’center’,vertical=’center’)
- ws[‘B2’].alignment = center_center
3つセットで覚えておきましょう。
最後までお読みいただき、ありがとうございました。がんばってください!