XLRD、Pythonを使用して、名前の範囲(グローバル、NDあたりのND)を見つける方法とアクセスする方法は?
-
02-10-2019 - |
質問
のドキュメント xlrd
ここhttp://www.python-excel.org/最新バージョンでは現在可能であると述べていますが、その方法は述べていません。
解決
あなたが実際に何を読んでいるのかわかりません。 XLRD AccessへのAccessは数年前から利用可能です(バージョン0.6.0、最新バージョンは0.7.1)、完全なドキュメントAB Initioが付属しています。
これはXLRDドキュメントリンクです それはに与えられています http://www.python-excel.org/ あなたが言及したページ。 Pagedownを2回叩くと、セクションが表示されている必要があります 名前の参照、定数、式、およびマクロ. 。これにより、概要が得られ、 Book.name_*
方法と Name
オブジェクト、およびデモンストレーションスクリプトへ。
これはドキュメントのSVNトランクバージョンであり、将来のリリースに適用されることに注意してください。 XLRDの現在のリリースバージョンでは利用できない特別な便利な方法に言及するかもしれません(から入手できます ピピ)および関連するドキュメントファイルを含む。
アップデート "" "私はこれまでのところに回答しました:somerange = book.name_map [u'somerange '] [0]そして今、私はそれを繰り返し、値をつかみ、その寸法を取得します。 Dir(Somerange)とヘルプ(Somerange)を試しましたが、それはあまり役に立ちませんでした。 "" "
あなたが呼んでいるもの someRange
のインスタンスです Name
クラス。あなたは読む必要があります そのクラスのドキュメント. 。あなたが読むなら、それは助けになるでしょう デモンストレーションスクリプトxlrdnameapidemo.py XLSファイルで実行してみてください。 「その寸法を取得する」は、論理的に「それを繰り返し、値をつかむ」に先行することに注意してください。便利な方法 Name.area2d
あなたが必要とするものかもしれません。
他のヒント
それは些細なことではなく、私の場合はXLS no xlsxでのみ機能しました(おそらく私のxlsxで name.evaluated == 0
):
name = book.name_map['my_named_range'][0]
assert name.result.kind == xlrd.oREF
ref3d = name.result.value[0]
for sheet_index in range(ref3d.shtxlo, ref3d.shtxhi):
sheet = book.sheet_by_index(sheet_index)
for row in range(ref3d.rowxlo, min(ref3d.rowxhi, sheet.nrows)):
for col in range(ref3d.colxlo, min(ref3d.colxhi, sheet.ncols)):
cell = sheet.cell(row, col)
# TODO: Do something with that cell.
あなたの範囲が次の場合に備えて、シート内の列と行の数を制限したい A:A
また 1:1
(つまり、行または列全体)。