我在 Excel 中有两列。第一个(C 列)有带值的单元格,第二个(B 列),我使用脚本从第一个带有 Excel 公式的单元格中提取一些值。
现在我想在另一列中使用第二列的值,脚本没有任何错误,但给出了空单元格,因为第二列包含公式。
是否可以粘贴值或仅从第二列中提取值?
这是我的代码:
for i in range(0,len(listaunica)):
ws4.cell(row=i+1,column=3).value=listaunica[i]
for i in range(0,len(listaunica)):
ws4.cell(row=i+1,column=2).value='=iferror(find(".",C{0}),C{0})'.format(i+1)
有人可以帮我解决这个问题吗?
最佳答案
我不完全了解你的情况,所以我会解释一些可能性:
(1) 您有一个 Excel 工作簿,使用 Excel 本身保存。在这种情况下,B 列应该有两个公式和这些公式的结果,因为 Excel 会计算它们。
(2) 您有一个 Excel 工作簿,该工作簿是使用其他方法保存的,例如由 OpenPyXL 编写的,并且尚未(尚未)被 Excel 打开和保存。在这种情况下,您很可能将或者公式或结果存储在 B 列中。
当您使用 OpenPyXL 阅读时,您必须选择是要公式还是结果。这由 data_only
参数控制。如果您只想要结果,请将此设置为 True
。如果您的工作簿保存在 Excel 中,因此同时具有公式和结果,那么在 OpenPyXL 中读取它们的方法是打开工作簿两次,一次使用 data_only=False
,一次使用 data_only=真
。很麻烦,但这就是 OpenPyXL 的设计方式。
如果您有来自场景 (2) 的工作簿,并且 B 列看起来仍然有公式,那么很可能尝试使用 data_only=True
打开工作簿只会为 B 列返回零. 在 Excel 中打开并保存此工作簿之前,您将无法从该工作簿中获取结果。
关于python - 使用用公式编写的单元格中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44041660/