所以基本上我要做的是读取excel工作簿中的一些输入变量并将它们写入一些输出模型单元格。然后我保存工作簿以尝试更新输出模型中的数据。由于我的输出模型单元格是公式,我尝试将工作簿重新加载为读取data_only,然后抓取这些单元格并将它们存储在单独的工作表上。然后我再次保存工作簿。
问题是我在data_only加载的工作簿中尝试获取的值(LS,Sales,TPLH)读取为none而不是我需要的值。我最终想把它变成一个循环迭代一堆输入变量,但我想尝试只用一个开始。
如果有人知道更好的方法或我做错了,请告诉我!我感谢任何反馈。 这是我的代码:
from openpyxl import load_workbook
wb2 = load_workbook("Z:\\PythonFiles\\testexcel.xlsx")
sh2 = wb2.get_sheet_by_name("Output Model")
sh= wb2.get_sheet_by_name('OptimizationData')
ForeCast = sh.cell(row=3, column=2).value
sh2.cell(row=3, column=6).value=ForeCast
wb2.save("Z:\\PythonFiles\\testexcel.xlsx")
wb = load_workbook("Z:\\PythonFiles\\testexcel.xlsx", data_only =True)
sh3 = wb.get_sheet_by_name("Output Model")
sh4 = wb.get_sheet_by_name("OptimizationData")
LS=sh3.cell(row=11, column=3).value
Sales = sh3.cell(row=12, column=3).value
TPLH = sh3.cell(row=13, column=3).value
sh4.cell(row=3, column=7).value=LS
sh4.cell(row=3, column=8).value=Sales
sh4.cell(row=3, column=9).value=TPLH
wb.save("Z:\\PythonFiles\\testexcel.xlsx")
答案 0 :(得分:1)
Openpyxl永远不会计算公式的结果。它完全取决于另一个应用程序。它还意味着当这些值通过openpyxl传递时会从工作簿中删除。保存wb2
后就会发生这种情况。如果要访问这些值,则需要先在仅数据模式下打开wb
。