Home » Python » xlwtの使い方 » xlwtのColumnオブジェクトはwriteメソッドを持たない

xlwtのColumnオブジェクトはwriteメソッドを持たない

動作検証バージョン:Windows 10 + Python 3.7.3 + xlwt 1.3.0

xlwtでセルにデータを書き込む処理の仕様を、興味深く感じています。

Excel書き込み (xlwt) | Python-izm」で、xlwtで行を表すRowオブジェクトがセルにデータを書き込むwriteメソッドを持っていることを知りました。

[スポンサードリンク]

xlwtのColumnがwriteを持っていないことを確認するスクリプト

Rowオブジェクトがwriteメソッドを持っているなら、列を表すColumnオブジェクトにもwriteメソッドが用意されているだろうと考えて、とりあえず以下のようなスクリプトを作って実行してみました。

import xlwt

bk = xlwt.Workbook()
sh = bk.add_sheet('シート1')
sh.write(0, 0, 'This is A1')

row_2 = sh.row(1)
row_2.write(0, 'This is A2')
row_2.write(1, 'This is B2')
row_2.write(2, 'This is C2')

col_B = sh.col(1)
col_B.write(0, 'This is B1') # The ERROR occurs here

bk.save(r'C:\temp\foo.xls')

結果「col_B.write(0, 'This is B1')」の行で、
  AttributeError: 'Column' object has no attribute 'write'
エラーが発生します。

Columnが持つ属性・メソッドはRowよりも少ない

Pythonのdir関数で、ColumnオブジェクトとRowオブジェクトが持つ属性・メソッドを確認すると、Columnのほうが随分少ないことがわかります。

先のスクリプトを実行した後に「dir(row_2)」を実行すると、以下のようなリストが返されます。
['_Row__adjust_bound_col_idx', '_Row__adjust_height', '_Row__cells', '_Row__excel_date_dt', '_Row__has_default_xf_index', '_Row__height_in_pixels', '_Row__idx', '_Row__max_col_idx', '_Row__min_col_idx', '_Row__parent', '_Row__parent_wb', '_Row__rich_text_helper', '_Row__xf_index', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__slots__', '__str__', '__subclasshook__', 'collapse', 'get_cells_biff_data', 'get_cells_count', 'get_height_in_pixels', 'get_index', 'get_max_col', 'get_min_col', 'get_row_biff_data', 'get_xf_index', 'has_default_height', 'height', 'height_mismatch', 'hidden', 'insert_cell', 'insert_mulcells', 'level', 'set_cell_blank', 'set_cell_boolean', 'set_cell_date', 'set_cell_error', 'set_cell_formula', 'set_cell_mulblanks', 'set_cell_number', 'set_cell_rich_text', 'set_cell_text', 'set_style', 'space_above', 'space_below', 'write', 'write_blanks', 'write_rich_text']

これに対して「dir(col_B)」の実行結果は、
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_index', '_parent', '_parent_wb', '_width', '_xf_index', 'best_fit', 'collapse', 'get_biff_record', 'get_width', 'hidden', 'level', 'set_style', 'set_width', 'unused', 'user_set', 'width', 'width_in_pixels']

です。

xlwtの設計思想が垣間見えるように感じます。

最終更新日時:2020-05-27 19:46

[スポンサードリンク]

Home » Python » xlwtの使い方 » xlwtのColumnオブジェクトはwriteメソッドを持たない

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

検索


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

.