Introduction
以下のようなデータファイルtest.xlsxがあります。
この一行目を中央揃えにしてレポートとして提出してほしいと依頼がありました。今回はこの作業を自動化したいと思います。
スクリプトとその実行結果
以下にこの自動化を行うためのスクリプトを紹介します。
sheet_align.py
'''
sheet_numberformat.py
purpose: read xlsx and set number format automatically
'''
import openpyxl as xl
from openpyxl.styles.alignment import Alignment
# set input file name
inputfile = 'test.xlsx'
# read input xlsx
wb1 = xl.load_workbook(filename=inputfile)
ws1 = wb1.worksheets[0]
# write in sheet
for row in ws1:
for cell in row:
if cell.row == 1:
cell.alignment = Alignment(horizontal = 'center',
vertical = 'center',
wrap_text = False)
# save xlsx file
wb1.save(inputfile)
結果は以下のようになります。
スクリプト詳細
from openpyxl.styles.alignment import Alignment
from openpyxl.styles.alignment import Alignment
ここでインポートしているAlignment関数は、セルを何揃えにするかを指定するオブジェクトを返します。
何揃えかを指定
# write in sheet
for row in ws1:
for cell in row:
if cell.row == 1:
cell.alignment = Alignment(horizontal = 'center',
vertical = 'center')
この部分で、もしセルが一行目なら水平方向・垂直方向ともに中央揃え、を指定しています。horizontal
で水平方向を、vertical
で垂直方向を何揃えにするかを指定します。horizontal, verticalでは以下の定数を指定することができます。
'left'
'center'
'distributed'
'general'
'justify'
'centerContinuous'
'fill'
'right'
そのほかにもtextRotation
で文字を回転させることができます。何度回転するかは0-180の整数で指定します。試しにif文の中を次の行に変えてみます。
cell.alignment = Alignment(horizontal = 'center',
vertical = 'center',
textRotation = 90)
実行結果は以下のように、一行目が90度回転したものとなります。