gpt4 book ai didi

Python xlrd 命名范围值

转载 作者:太空宇宙 更新时间:2023-11-03 13:00:15 27 4
gpt4 key购买 nike

在 Python 中使用 XLRD 从 Excel 中读取。

简单的场景。我有一个带有值的单元格,它与命名范围相关联。

NamedRange "Foo"= Sheet1!$A$1A1中的值为“Bar”

book =xlrd.open_workbook("")

rng = book.name_map['foo'][0] # lower case for some reason.

print rng.??? # how to print the cell value bar??

我只想在 python 代码中引用命名范围“Foo”并打印出单元格的值“Bar”。

编辑:这是另一个更完整的示例:

import xlrd

workbook = xlrd.open_workbook('/path/to/metester.xls')
cell_obj = workbook.name_and_scope_map.get(('sales', -1))
# this does print Sheet1!$A$1
print cell_obj.formula_text
# this raises the NoneTypeError
print cell_obj.cell()

formula_text 用于确保 excel 可以读取文件。在我的例子中,命名单元格是 Sheet1 单元格 A1 中的“销售”。

返回:

Sheet1!$A$1
Traceback (most recent call last):
File "tester.py", line 7, in <module>
print cell_obj.cell()
File "/usr/local/lib/python2.7/dist-packages/xlrd/book.py", line 253, in cell
self.dump(self.book.logfile,
AttributeError: 'NoneType' object has no attribute 'logfile'

最佳答案

首先,如 xlrd 模块信息 (https://secure.simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html?p=4966) 中所述,它是小写的:

name_map [#]

A mapping from lower_case_name to a list of Name objects. The list is sorted in scope order. Typically there will be one item (of global scope) in the list.

您有两个选择。如果您真的只是为单个单元格设置名称,那么您可以使用 Name 类的“cell”方法(请参阅文档):

import xlrd
book = xlrd.open_workbook("")
Name = book.name_map['foo'][0]
print(Name.cell())

控制台:

text:'Bar'

但是,如果您已经命名了整个值范围,那么您需要使用 Name 类的 area2d 方法:

import xlrd
book = xlrd.open_workbook("q1.xls")
Name = book.name_map['foo'][0]
Sheet, rowxlo, rowxhi, colxlo, colxhi = Name.area2d()
for i in range(rowxhi):
print(Sheet.cell(i,0))

控制台:

text:'Bar'

关于Python xlrd 命名范围值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24437009/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com