【发布时间】:2022-11-08 05:16:24
【问题描述】:
所以,我正在使用 openpyxl 和 pandas 打开一个 excel 文件,并写入数据。然后,我尝试使用 pywin32 打开同一个文件并运行一个宏来解析数据。但是,尝试使用 pywin32 打开文件时出现此错误:
pywintypes.com_error:(-2147352567,'发生异常',(0,'Microsoft Excel','工作簿类的打开方法失败','xlmain11.chm',0,-2146827284),无)
这是我在 pywin32 中使用的代码:
if os.path.exists(self.excel_parser_location):
# print "Opening Telematics_Messages_Parser.xlsm in Excel"
xl = client.Dispatch("Excel.Application")
xl.Application.visible = True
wb = xl.Workbooks.Open(os.path.abspath(self.excel_parser_location), ReadOnly=1)
这是我在使用 pywin32 之前用来写入数据的代码:
if os.path.exists(csv_path):
data = pd.read_csv(csv_path, error_bad_lines=False)
book = openpyxl.load_workbook(self.excel_parser_location, keep_vba=True)
writer = pd.ExcelWriter(self.excel_parser_location)
writer.book = book
data.to_excel(writer, sheet_name='2 RawData', index=False)
# print 'Writing new data'
book.remove(book['2 RawData'])
# print 'Removing blank sheet'
book_sheet = book['2 RawData1']
book_sheet.title = '2 RawData'
# print 'Renaming sheet'
writer.save()
writer.close()
过去我遇到过类似的问题,我通过使用旧版本的 pywin32 解决了这个问题,但现在不行了。我正在使用 pywin32 版本 223。
【问题讨论】:
-
也许试试
ReadOnly = True。该参数是一个变体,也许 Excel 需要一种 VT_BOOL,而不是 VT_I4? -
还有
xl.Visible=True(应用程序是多余的),但我怀疑这是导致问题的原因。 -
我都试过了,但我仍然遇到问题。虽然,现在看起来响应中有一些额外的东西。
-
文件“C:\BCP_Telematics_HIL_Test\Mini-Hex-Telematics\Test Scripts\Support_files\Functions\telematics2.py”,第 96 行,run_parsing_macro wb = xl.Workbooks.Open(os.path.abspath(self.excel_parser_location), ReadOnly =True)文件“C:\Users\martita3\AppData\Local\Temp\gen_py\3.7\00020813-0000-0000-C000-000000000046x0x1x9\Workbooks.py”,第 78 行,在 Open、Converter、AddToMru、Local、CorruptLoad )
-
第一个“文件”错误是我遇到问题的地方。但是,第二个“文件”错误似乎是新的,我不知道它来自哪里。