我的设备无法使用 xlwings 或 win32com.client 打开 excel 应用程序,但我需要刷新 excel 文件以提取之前编辑的数据

问题描述 投票:0回答:1

我有一个相当长的程序,基本上用一些数据编辑 Excel 文件的第一张表,然后 Excel 文件的第二张表进行一些数学运算并拟合数据,然后文件的第三张表提取相关参数到一排。 我对此没有任何问题,但是当我尝试使用

pandas.read_excel
将数据从第三个工作表中提取时,通过 Excel 中的某些公式从第二个工作表中提取到第三个工作表中的值被读取为 NaN。我能够毫无问题地提取刚刚编辑的值,这只是依赖于公式的值才是问题所在,因为我将这些参数放入数据框中以输入到第二个 Excel 文件中。

我知道有一个解决方案,因为我以前曾经让它工作过一次,但后来我的整个项目被删除了,我一辈子都不记得我是怎么做到的。任何帮助将不胜感激。

我尝试了

load_workbook()
并保存的各种变体,
xlwings
应用程序打开和保存以及
win32com
应用程序打开并等待所有查询完成,然后保存并退出,但是
xlwings
win32com
都给出了我这个错误:

(-2147352567, 'Exception occurred.', (0, None, None, None, 0, -2147352565), None)
During the handling of the above exception another exception occurred
...
KeyError: 'My_File.xlsx'
During the handling of the above exception another exception occurred
com_error Traceback (most recent call last)
---> ex_book = ex_app.books.open(path)
...
com_error: (-2147352567, 'Exception occurred.', (0, 'Microsoft Excel', 'Open method of workbooks class failed', 'xlmain11.chm', 0, -2146827284), None)

我在 win32com.client 和 pythoncom 中遇到了非常相似的错误

import xlwings as xl
import win32com.client as win32

def refresh_data(path):

#One example of an attempt I made with xlwings 

wb = load_workbook(path)
ex_app = xl.App(visible=False)
ex_book = ex_app.books.open(path)
ex_book.save()
ex_book.close()
ex_app.quit()

以下是尝试使用 wn32com.client 的一个版本

XLAPP = win32.DispatchEx("Excel.Application")
book= XLAPP.Workbooks.Open(path)
book.RefreshAll()
XLAPP.CalculateUntilAsyncQueriesDone()
book.save()
XLAPP.Quit()
'''
python excel pandas dataframe error-handling
1个回答
0
投票

您需要使用绝对路径,例如

c:\tmp\data\

试试这个:

import os
path = os.path.abspath(path)
© www.soinside.com 2019 - 2024. All rights reserved.