Home » Python » xlwingsの使い方 » xlwingsで列幅を表すColumnWidthは?-Range.column_widthプロパティ

xlwingsで列幅を表すColumnWidthは?-Range.column_widthプロパティ

動作検証バージョン:Windows 11 Home + Python 3.10.6(64-bit) + xlwings 0.29.1 + 64bit Excel(バージョン2302 ビルド16130.20218)

「columnwidth xlwings」
という検索で、このサイト『インストラクターのネタ帳』へのアクセスがありました。

Excelを操作するPythonの外部ライブラリ「xlwings」を使って、列の幅を操作するにはどのようなコードを書けばいいのかを調べていらしたのでしょう。

検索キーワードから、Excel VBAのRange.ColumnWidthプロパティに相当するプロパティが、

xlwingsでは何なのかを調べていた可能性が高そうに思えます。

xlwingsではRange.column_widthが列幅を表す

結論。
xlwingsでは、Rangeオブジェクトのcolumn_widthプロパティを使えば、Excelの列幅を取得・設定できます。

VBAのプロパティ等はパスカル形式で定義されていますが、Pythonの場合はスネーク形式が使われます。
xlwingsは、基本的にこのルールに則って実装されているため、Excel VBAの「ColumnWidth」は「column_width」になっています。

ちなみに、Range.column_widthプロパティは、_xlwindows.pyモジュールで

@property
def column_width(self):
    if self.xl is not None:
        return self.xl.ColumnWidth
    else:
        return 0

@column_width.setter
def column_width(self, value):
    if self.xl is not None:
        self.xl.ColumnWidth = value

と定義されています。

xlwingsのRange.column_widthを確認するサンプル

拙著『VBAユーザーのためのPython超入門』でも多用しているIDLEのShellウィンドウなどで、以下のコードを実行してみてください。

import xlwings as xw

bk = xw.Book()
sht = bk.sheets.active
rng = sht.range('A1')

rng.column_width = 15
rng.value = "'000010000100001"
print(rng.column_width)

新規にブックが作成され、アクティブシートのA列の列幅がおよそ15文字分に設定され、A1セルに文字列「000010000100001」と入力されてから、A列の列幅「15.0」が出力されます。

One unit of column width is equal to the width of one character in the Normal style. For proportional fonts, the width of the character 0 (zero) is used.

とのことなので、約15文字分であることを確認しやすいように、文字列「000010000100001」をA1セルに入力する処理も入れています。

最終更新日時:2023-04-27 10:37

[スポンサードリンク]

Home » Python » xlwingsの使い方 » xlwingsで列幅を表すColumnWidthは?-Range.column_widthプロパティ

「xlwingsの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.