styles.alignment【配置】モジュール
メモ ( 概要 基本 文字の配置 文字の制御・改行 方向 (文字列の回転・縦書き) 右から左 ) Alignment【配置】クラス 例
メモ
概要
- Cell【セル】の配置に関連するモジュール
- Excel の [セルの書式設定]-[配置]タブ に対応
- Excel の [セルの書式設定]-[配置]タブ に対応
- モジュール内定義
- インポート
- 下記は、openpyxl.styles からインポート可
Alignment【配置】クラス
- 下記は、openpyxl.styles からインポート可
- その他スタイルは、cell【セル】モジュール 参照 (個々の詳細は下記モジュール)
- styles.numbers【表示形式】 ・styles.fonts【フォント】 ・styles.borders【罫線】 ・styles.fills【塗りつぶし】 ・styles.protection【シート保護】
- 関連モジュール
基本
〔 例 〕- Cell【セル】の alignment【配置】 プロパティに対応
- 変更する場合は、Alignment【配置】を新規作成し設定
文字の配置
- 横位置:horizontal (横位置)引数
- インデント:indent (インデント)引数
- 縦位置:vertical (縦位置)引数
- 前後にスペースを入れる:justifyLastLine ([前後にスペース]の指定有無)引数
文字の制御・改行
- 折り返して全体を表示する: wrapText ([折り返して全体表示]の指定有無) ・wrap_text ([折り返して全体表示]の指定有無)【優先】引数
改行:'\n' - 縮小して全体を表示する: shrinkToFit ([縮小して全体表示]の指定有無) ・shrink_to_fit ([縮小して全体表示]の指定有無)【優先】引数
- セルを結合する: worksheet【ワークシート】モジュール の セル結合・セル結合解除 参照
方向 (文字列の回転・縦書き)
- 縦書き: textRotation (文字列の回転・縦書き) ・text_rotation (文字列の回転・縦書き)【優先】 引数に 255 を指定
- 角度: textRotation (文字列の回転・縦書き) ・text_rotation (文字列の回転・縦書き)【優先】 引数に 0 ~ 180 を指定
右から左
- 文字の方向:readingOrder (文字の方向)引数
外部リンク
- openpyxl (英語)
- ECMA-376:Office Open XML file formats (英語)
SpreadsheetML:Styles -- alignment (Alignment)
Alignment【配置】クラス
クラス定義
クラス | 備考 |
---|---|
親:openpyxl.descriptors.serialisable.Serialisable インポート:from openpyxl.styles import Alignment (省略形) | |
class Alignment( horizontal=None, vertical=None, textRotation=0, wrapText=None, shrinkToFit=None, indent=0, relativeIndent=0, justifyLastLine=None, readingOrder=0, text_rotation=None, wrap_text=None, shrink_to_fit=None, mergeCell=None) | 配置 horizontal (str)横位置 vertical (str)縦位置 textRotation (int)文字列の回転・縦書き (text_rotation) wrapText (bool)[折り返して全体表示]の指定有無 (wrap_text) shrinkToFit (bool)[縮小して全体表示]の指定有無 (shrink_to_fit) indent (float)インデント relativeIndent (float) justifyLastLine (bool)[前後にスペース]の指定有無 readingOrder (float)文字の方向 text_rotation (int)文字列の回転・縦書き (優先) wrap_text (bool)[折り返して全体表示]の指定有無 (優先) shrink_to_fit (bool)[縮小して全体表示]の指定有無 (優先) mergeCell |
操作
操作 | 備考 |
---|---|
for attr in Alignment | 繰り返し処理 attrプロパティ情報 (プロパティと値のtuple) ※設定分のみ |
プロパティ
プロパティ | 型 | 備考 | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
horizontal | str | 横位置
| ||||||||||||||||||
indent | float | インデント | ||||||||||||||||||
justifyLastLine | bool | [前後にスペース]指定有無 横位置が 'distributed'【均等割り付け】で指定可 indent【インデント】が優先 | ||||||||||||||||||
readingOrder | float | 文字の方向 (アラビア語等で対応)
| ||||||||||||||||||
relativeIndent | float | |||||||||||||||||||
shrinkToFit | bool | [縮小して全体表示]の指定有無 | ||||||||||||||||||
shrink_to_fit | bool | shrinkToFit【[縮小して全体表示]の指定有無】のエイリアス | ||||||||||||||||||
tagname | str | タグ名 ('alignment') | ||||||||||||||||||
textRotation | int (0 ~ 180・255) | 文字列の回転・縦書き 0 ~ 90:0度 ~ 90度 91 ~ 180:-1度 ~ -90度 255:縦書き | ||||||||||||||||||
text_rotation | int (0 ~ 180・255) | textRotation【文字列の回転・縦書き】のエイリアス | ||||||||||||||||||
vertical | str | 縦位置
| ||||||||||||||||||
wrapText | bool | [折り返して全体表示]の指定有無 (改行を有効にする場合に指定) | ||||||||||||||||||
wrap_text | bool | wrapText【[折り返して全体表示]の指定有無】のエイリアス |
例
基本
from openpyxl import Workbook
from openpyxl.styles import Alignment
from openpyxl.utils import get_column_letter
# ワークブック作成
WORKBOOK = 'sample.xlsx'
wb = Workbook()
ws = wb.active
ws.column_dimensions[get_column_letter(1)].width = 2
# 横位置
col = 2
horizontals = {
'fill': '繰り返し',
'left': '左詰め (インデント)',
'distributed': '均等割り付け (インデント)',
'general': '標準',
'centerContinuous': '選択範囲内で中央',
'justify': '両端揃え '*10,
'center': '中央揃え',
'right': '右詰め (インデント)',
}
ws.cell(2, col).value = '横位置'
ws.cell(3, col).value = 'horizontal'
ws.column_dimensions[get_column_letter(col)].width = 15
ws.column_dimensions[get_column_letter(col + 1)].width = 30
row = 5
for h, value in horizontals.items():
cell = ws.cell(row, col, h)
alignment = Alignment(
vertical='center',
)
cell.alignment = alignment
cell = ws.cell(row, col + 1, value)
alignment = Alignment(
horizontal=h,
vertical='center',
)
cell.alignment = alignment
if h == 'centerContinuous':
cell = ws.cell(row, col + 2)
cell.alignment = alignment
row += 1
# 縦位置
col += 3
verticals = {
'top': '上詰め',
'center': '中央揃え',
'bottom': '下詰め',
'justify': '両端揃え' * 3,
'distributed': '均等割り付け' * 2,
}
ws.cell(2, col).value = '縦位置'
ws.cell(3, col).value = 'vertical'
row = 5
for v, value in verticals.items():
cell = ws.cell(row, col, v)
alignment = Alignment(
vertical='center',
)
cell.alignment = alignment
cell = ws.cell(row, col + 1, value)
alignment = Alignment(
vertical=v,
)
cell.alignment = alignment
row += 1
# 文字列の回転・縦書き
col += 3
rotations = [0, 30, 45, 60, 90, 120, 135, 150, 180, 255]
VALUE = '文字列'
ws.cell(2, col).value = '文字列の回転'
ws.cell(3, col).value = 'textRotation / text_rotation'
for i in range(len(rotations)):
row = i + 5
ws.row_dimensions[row].height = 50
cell = ws.cell(row, col, rotations[i])
alignment = Alignment(
vertical='center',
)
cell.alignment = alignment
cell = ws.cell(row, col + 1, VALUE)
alignment = Alignment(
horizontal='center',
vertical='center',
textRotation=rotations[i],
)
cell.alignment = alignment
# ワークブック保存
wb.save(WORKBOOK)