【发布时间】:2014-06-26 17:47:01
【问题描述】:
在 Python 中使用 XLRD 从 Excel 中读取数据。
简单的场景。我有一个带有值的单元格,它与一个命名范围相关联。
NamedRange "Foo" = Sheet1!$A$1 A1中的值为“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'
【问题讨论】:
-
有什么解决办法吗?我试过 rng.cell() 并且给了我一个错误:AttributeError: 'NoneType' object has no attribute 'logfile'。我使用的是 0.9.3 版
-
@llamawithabowlcut 嗯 - 属性错误与 'the source code' 不相符 - Name.cell() 似乎只与
XLRDError相符。你确定这是给你错误的那条线吗?因为它指的是logfile- 可能是您的日志设置或实际失败的东西?你能给我们一个更完整的用例吗?也许您的问题与@Dickster 的原始问题不同,您需要一个新问题? -
@JRichardSnape:请看我的编辑。我没有其他导入,这是完整的代码。
-
@llamawithabowlcut 查看我的回答 - 您的问题与原始问题不同。感谢您确认您使用的是 .xlsx 而不是 .xls。让我知道它是否有效 - 花了一段时间才弄清楚。
标签: python excel xlrd named-ranges