LoginSignup
15
14

More than 5 years have passed since last update.

openpyxlでセルの値を中央揃えにする

Last updated at Posted at 2019-03-18

Introduction

以下のようなデータファイルtest.xlsxがあります。

スクリーンショット 2019-03-18 15.55.26.png

この一行目を中央揃えにしてレポートとして提出してほしいと依頼がありました。今回はこの作業を自動化したいと思います。

スクリプトとその実行結果

以下にこの自動化を行うためのスクリプトを紹介します。

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)

結果は以下のようになります。

スクリーンショット 2019-03-18 15.55.59.png

スクリプト詳細

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度回転したものとなります。

スクリーンショット 2019-03-18 16.19.59.png

15
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
14