如何使用openpyxl模块获取单元格的真实值

68 投票
6 回答
191483 浏览
提问于 2025-04-17 23:40

我在这方面遇到了很大的麻烦,因为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)

撰写回答