用Python的openpyxl模块如何使用函数将数据导入单元格?

3
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文件中加载数据。在EXCEL文件中,H10是一个SUM函数,而sheet_ranges1.cell(ro=10,column=8)sheet_ranges1.cell('H10')相同。当我在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)

result: '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个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接