用Openpyxl和Xlwings评估索引匹配;公式返回,而不是值

2024-10-02 12:24:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我参考了以下链接,但仍然无法使我的代码正常工作
Python openpyxl data_only=True returning None
Refresh Excel External Data with Python
Using Python's Openpyxl for an index match
由于我对python和编码还不熟悉,所以我正在处理我的项目。最后,我希望用一个随机数填充一个单元格,然后使用索引匹配来计算文本和数字的列表,以识别与随机数对应的文本字符串。如果电子表格中的第4项是“你好,世界!”如果随机数是4,那么程序将返回“helloworld!”你知道吗

从概念上讲,我认为我可以使用数据\u only=True,但问题是,由于所有的计算都是用Python完成的,而不是excel,所以公式永远不会被计算。所以它一直返回公式而不是值。你知道吗

我试过重新排列下面的代码块。当它工作时,文件只是打印“=index(B4:B72,match(B1,A4:A72,0))”我开始尝试使用win32com库来打开和关闭文件,但到目前为止还没有工作。 但是,当我尝试操作代码以获得预期结果时,也会收到许多错误。有时,如果我立即重新运行代码,我会得到一个错误,说对文件的权限被拒绝或它是只读的。我还注意到,在任务管理器中,许多Excel进程正在启动,尽管实际上没有打开任何文件。你知道吗

我能够用Openpyxl文档走得很远,但是我发现xlwings文档很难掌握,所以我想发帖寻求帮助。你知道吗

path= "C:\\Users\\Me\\Documents\\Python\\File.xlsx"

xlapp = win32com.client.DispatchEx("Excel.Application")
wb = xlapp.workbooks.open(path)
wb.RefreshAll()
wb.save(path)
xlapp.Quit()


myworkbook=load_workbook(path , data_only=True)
worksheet=myworkbook['Sheet1']
#print(myworkbook.sheetnames)
mycell=worksheet['B2']
mycell.value="=index(B4:B72,match(B1,A4:A72,0))"
myworkbook.save(path)


print(mycell.value)

这就产生了错误pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, 'Microsoft Excel', "We can't save 'File.xlsx' because the file is read-only.\n\nTo keep your changes, you'll need to save the workbook with a new name or in a different location.", 'xlmain11.chm', 0, -2146827284), None)


Tags: 文件path代码trueonlydataindexsave

热门问题