我在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)
有人可以帮我这个吗?
答案 0 :(得分:1)
我不完全了解你的情况,所以我将解释一些可能性:
(1)您有一个使用Excel本身保存的Excel工作簿。在这种情况下,列B应该具有两个公式和这些公式的结果,因为Excel会计算它们。
(2)您有一个使用其他方法保存的Excel工作簿,例如由OpenPyXL编写,并且尚未(尚未)由Excel打开并保存。在这种情况下,您很可能 公式或结果存储在B列中。
当您使用OpenPyXL阅读时,您必须选择是否需要公式或结果。这由data_only
参数控制。如果您只想要结果,请将其设置为True
。如果您的工作簿保存在Excel中,因此同时包含公式和结果,那么在OpenPyXL中读取它们的方法是打开工作簿两次,一次使用data_only=False
,一次使用data_only=True
。很麻烦,但这就是OpenPyXL的设计方式。
如果你有方案(2)的工作簿,而且列B看起来仍然有公式,那么很可能尝试使用data_only=True
打开工作簿,只会为列B返回零。你不会能够从此工作簿中获取结果,直到您在Excel中打开它然后保存它。
答案 1 :(得分:0)
试试这个
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)
ws4.cell(row=i+1,column=2).value = ws4.cell(row=i+1,column=2).value
供参考documentation?