openpyxlを使って、セル1つの文字を中央揃えにする方法はわかったけど、
表全体に適用したい場合はどうしたらいいの?
表全体の文字を中央揃えにするには、for文を使います。
for文といったら難しく感じると思いますが、
初心者にもやさしい簡単な方法をご紹介します。
openpyxlを使って表全体の文字を中央揃えにする方法を
Python歴3年の私が、できるだけわかりやすく解説し、解決に導きます。
openpyxlを使って表全体のセルを中央揃えにするには
「Alignment()」と簡単なfor文を使用します。まずは実行見本をどうぞ。
実行見本
全コード
ひとまず全コードを網羅します。解説は後ほど行います。
import openpyxl
from openpyxl.styles.alignment import Alignment
wb = openpyxl.load_workbook('input.xlsx')
ws = wb['Sheet1']
center_center = Alignment(horizontal='center',vertical='center')
for row in ws:
for cell in row:
ws[cell.coordinate].alignment = center_center
wb.save('input.xlsx')
center_center = Alignment(horizontal='center',vertical='center')
for row in ws:
for cell in row:
ws[cell.coordinate].alignment = center_center
事前準備
- openpyxlのインストール
既存のエクセルファイルを編集するには「openpyxl」のインストールが必要です。
openpyxlのインストール方法
openpyxlを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install openpyxl
※openpyxlを使用したことがある場合は、このインストール作業は不要です。
解説
文字を中央揃えにする
>>7.center_center = Alignment(horizontal=’center’,vertical=’center’)
上記一文にて、セルの文字を中央揃えにすることができます。
インポートも含め、詳しい解説は下記記事で行っておりますので、ご参考ください。
for文の解説
for row in ws:
for cell in row:
ws[cell.coordinate].alignment = center_center
二重ループになっているため少し難しく感じるかもしれませんが、簡単です。
「for row in ws:」
ws(ワークシート)をrow(行)という変数に入れていきます。
wsは二次元配列のため、rowは単なる配列になります。
「for cell in row:」
今度はrowをcell(セル)という変数に入れていきます。
rowは配列のため、cellは配列ではなく、ただの変数になります。
あとはセル1つ1つに中央揃え(center_center)を適用していきます。
「coordinate」で座標を取得し、1行目を1セルずつ処理しているという感じです。
下記記事にてもっとわかりやすい解説をしておりますので、詳しく知りたい方はご覧ください。
その他の解説
既存ファイルを開いて保存する方法などの操作の基本解説は、下記記事で行っております。
ご参考ください。
うまく動作しない時
エラーが出る
No such file or directory: ○○
これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。
Permission denied: ○○
操作しようとしているファイルにアクセスできないというエラーです。
「ファイルを開いている状態なので編集できない」と言っていることが多いので、開いていれば閉じて再度トライしましょう。
開いていなければ、コンピューターを再起動して再度トライしてみましょう。
Worksheet ○○ does not exist
「指定したシートがありません」というエラーです。
指定のシート名が間違っていないか、「sheet1」など先頭が小文字になっていないか確認しましょう。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
最後に
openpyxlを使って表全体の文字を中央揃えにする方法を解説いたしました。
罫線を全体に引くことなどにも応用できますので、ご活用ください。
最後までお読みいただき、ありがとうございました。がんばってください!