如何使用openpyxl模块获取单元格的真实值
我在这方面遇到了很大的麻烦,因为cell.value这个函数返回的是单元格使用的公式,而我需要的是Excel计算后的结果。
谢谢你。
好的,我想我找到了解决办法;显然,要获取单元格的内部值,你需要在工作表中先使用iter_rows(),这会得到一个“RawCell”的列表。
for row in ws.iter_rows():
for cell in row:
print cell.internal_value
6 个回答
0
请在Python中使用下面的代码,这样你就可以通过openpyxl模块获取真实的数值:
for row in ws.iter_rows(values_only=True):
for cell in row:
print(cell)
2
试着用 cell.internal_value
来代替。
13
你可以试试下面的代码。只需要在代码中提供Excel文件的路径,以及你想要获取的单元格的位置,具体是用行号和列号来表示。
from openpyxl import Workbook
wb = Workbook()
Dest_filename = 'excel_file_path'
ws=wb.active
print(ws.cell(row=row_number, column=column_number).value)
34
从代码来看,你似乎在使用优化过的读取方式:read_only=True
。你可以通过在打开工作簿时使用data_only=True
这个选项,来切换提取公式和它的结果。
internal_value
是一个私有属性,之前只用来指代Excel使用的(未指定类型的)值,也就是日期用1900年作为起点的数字,而不是Python中的格式。这个属性在这个问题首次被提问后就从库中移除了。
117
正如Charlie Clark已经建议的那样,当你加载你的工作簿时,可以把 data_only
设置为 True
:
from openpyxl import load_workbook
wb = load_workbook("file.xlsx", data_only=True)
sh = wb["Sheet_name"]
print(sh["x10"].value)