xlwingsでセル背景色、フォント、罫線、計算式を設定する方法

xlwingsでエクセルのセルのデザインを変更するサンプルです。

セル背景色、フォント、罫線、計算式の設定方法です。全てxlwingsのクラスに標準装備されていれば、公式ドキュメントで解決できたのですが、apiを通さないと不可能なものもありました。

xlwingsのクラスsheetやrangeには、apiプロパティがあり、元のオブジェクトに対してアクセスが可能になります。このapiを介してエクセルを操作することで、標準装備されてない制御が実現できました。

日本だと見つけづらかったので、参考になるよう書いておきます。

xlwingsを使った、セルに関する設定

セル等の制御に関するソースコードは、下のものが共通して付きます。

import xlwings as xw

#   エクセルの非表示を設定
xw.App(visible=False)

#   既存のBOOKを開く
book = xw.Book('.\\test.xlsx')

#   左から数えて1番目のシートを選択
sheet = book.sheets[0]

rng_b2 = sheet.range('b2')
rng_d2 = sheet.range('d2')

# ・・・

ちなみに、xlwingsのapiを介してエクセルを制御する方法は、エクセルのVBAのドキュメントに書いてあります。

元のエクセル(test.xlsx)は、このようなものです。セルb2に「たまねぎ」が入っているだけです。

excel xlwingsでセル操作

セル背景色方法

色設定は、標準プライオリティで可能です。

#   背景色の設定
rng_b2 = sheet.range('b2')
rng_b2 = sheet.range('b2')
rng_b2.color = 251, 251, 180

フォントの設定方法

セルのフォントは、rangeクラスのapiプロパティを介して制御します。

#	フォントの設定
rng_b2 = sheet.range('b2')
rng_b2.api.Font.ColorIndex = 5
rng_b2.api.Font.Size = 30
rng_b2.api.Font.Bold = True
rng_b2.api.HorizontalAlignment = -4131  # 横配置
rng_b2.api.VerticalAlignment = -4130    # 縦配置

# セル幅を調整
rng_b2.autofit()

HorizontalAlignment と VerticalAlignment に設定できる値は、Excel VBAのドキュメントにあります。

HorizontalAlignmentに設定できる値の一覧

名前 説明
xlHAlignCenter -4108 中央揃え
xlHAlignCenterAcrossSelection 7 選択範囲内中央
xlHAlignDistributed -4117 均等割り付け
xlHAlignFill 5 繰り返し
xlHAlignGeneral 1 標準(データ形式に従って配置)
xlHAlignJustify -4130 両端揃え
xlHAlignLeft -4131 左詰め
xlHAlignRight -4152 右詰め

出典:マイクロソフト

VerticalAlignmentに設定できる値の一覧

名前 説明
xlVAlignBottom -4107 下詰め
xlVAlignCenter -4108 中央揃え
xlVAlignDistributed -4117 均等割り付け
xlVAlignJustify -4130 両端揃え
xlVAlignTop -4160 上詰め

出典:マイクロソフト

罫線の設定

罫線もapiを介さないと操作できません。

#   罫線の設定
rng_b2 = sheet.range('b2')
rng_b2.api.Borders(9).LineStyle = 1
rng_b2.api.Borders(9).Weight = 3

罫線の位置をBorder()の引数で設定できる値の一覧

名前 説明
xlDiagonalDown 5 左上から右下
xlDiagonalUp 6 左下から右上
xlEdgeBottom 9 最下
xlEdgeLeft 7 左端
xlEdgeRight 10 右端
xlEdgeTop 8 最上
xlInsideHorizontal 12 全セルの左右
xlInsideVertical 11 全セルの上下

出典:マイクロソフト

罫線のスタイルに設定できる値の一覧

名前 説明
xlContinuous 1 実線(細)
xlDash -4115 破線
xlDashDot 4 一点鎖線
xlDashDotDot 5 二点鎖線
xlDot -4118 点線
xlDouble -4119 二重線
xlLineStyleNone -4142 無し
xlSlantDashDot 13 斜め斜線

出典:マイクロソフト

計算式の設定

計算式の設定は、標準プライオリティで可能です。

rng_d2.formula = '="新鮮な、" & b2'

一連のソースコードと実行した結果

import xlwings as xw

#   エクセルの非表示を設定
xw.App(visible=False)

#   既存のBOOKを開く
book = xw.Book('.\\test.xlsx')

#   左から数えて1番目のシートを選択
sheet = book.sheets[0]

rng_b2 = sheet.range('b2')
rng_d2 = sheet.range('d2')

#   セル背景色
rng_b2.color = 251, 251, 180

#   フォント設定
rng_b2.api.Font.ColorIndex = 5
rng_b2.api.Font.Size = 30
rng_b2.api.Font.Bold = True
rng_b2.api.HorizontalAlignment = -4131  # 横配置
rng_b2.api.VerticalAlignment = -4130    # 縦配置

#   セルの幅を調整
rng_b2.autofit()

#   罫線の設定
rng_b2.api.Borders(9).LineStyle = 1
rng_b2.api.Borders(9).Weight = 3

#   計算式の設定
rng_d2.formula = '="新鮮な、" & b2'

book.save()
book.close()

実行後のエクセルファイル

excel xlwingsでセル操作

エクセルファイルのデザインの設定まで求める事もある

外部ツールからエクセルファイルを操作して書き換える場合、セルの値や行の変更といったデータ操作が中心でした。望まれた値を入れてしまえば、後は各担当者が効率がいいようにデザインするのです。しかし、中にはデータによって、デザインの変更を求めらえることもありました。

方法が分かればなんてことはないのですが、見つからないと、私の場合、それに焦って更に見つけづらくなって、時間を浪費します。皆さんが、そうならないように書いておきました。

コメント

タイトルとURLをコピーしました