python openpyxl 使用函数在单元格中导入数据

Posted

技术标签:

【中文标题】python openpyxl 使用函数在单元格中导入数据【英文标题】:python openpyxl import a data in a cell with a function 【发布时间】:2015-04-21 11:57:04 【问题描述】:
from openpyxl import Workbook
from openpyxl.compat import range
from openpyxl.cell import get_column_letter
from openpyxl import load_workbook

wb1 = load_workbook(filename = 'B.xlsx')
sheet_ranges1 = wb1["Sheet1"]
wb1.save('B.xlsx')

print (sheet_ranges1.cell(row=10,column=8).internal_value)

我想从 .xlsx 文件中加载数据。 sheet_ranges1.cell(ro=10,column=8)sheet_ranges1.cell('H10') 相同。而在EXCEL文件中,H10是一个SUM函数。当我在 python 中打印它时:

print (sheet_ranges1.cell(row=10,column=8).internal_value)

它显示:

=SUM(N23:N128)

我想知道如何在 H10 中显示数字。 .internal_value.value 似乎都不起作用。我也试过data_only=True,但是好像不行。

例如:

     A     B     C
1    4     5     9

C1=A1+B1

wb1 = load_workbook(filename = 'B.xlsx')
sheet_ranges1 = wb1["Sheet1"]
wb1.save('B.xlsx')

print (sheet_ranges1.cell(row=2,column=3).value)

结果:'A1+B1'

wb1 = load_workbook(filename = 'B.xlsx',data_only=True)
sheet_ranges1 = wb1["Sheet1"]
wb1.save('B.xlsx')

print (sheet_ranges1.cell(row=2,column=3).value)

结果:9

我想用openpyxl改变A1B1的值,并将C1导入另一个excel文件。但是,如果我不使用data_only=True,结果将是'=A1+B1'。如果我使用data_only=True,我将A1,B1的值改为5,6后,C1=9,即C1中不存在该函数 细胞。

块引用

【问题讨论】:

【参考方案1】:

Openpyxl 是这样设计的,您可以检索公式或公式的值,但不能同时检索两者。原因是 openpyxl 从不评估公式,因此永远不能保证结果的有效性。 Excel 存储公式的最后计算值,我们可以读取该值。但是,我们假设您可以更改公式中使用的值,这会使此值无效并需要重新计算公式。如果您想这样做,您必须将文件传递给可以执行此操作的应用程序。

【讨论】:

以上是关于python openpyxl 使用函数在单元格中导入数据的主要内容,如果未能解决你的问题,请参考以下文章

python openpyxl 使用函数在单元格中导入数据

有没有办法同时使用 Openpyxl 和 Seaborn? (Python)

利用Python中的pandas如何写入到excel指定的单元格中?

使用 openpyxl 移动到相邻单元格

如何使用 python 的 openpyxl 模块访问单元格的实际值

Openpyxl不修改单元格值