【发布时间】:2017-11-16 08:28:20
【问题描述】:
我正在尝试在 Excel 工作表中自动执行一些任务。
它包括从 excel 表格创建 pandas 数据框,然后进行必要的过滤和填充,然后将 pandas 数据框写入 excel 表格,稍后会附加到另一个 excel 表 (因为 pandas 总是创建一个新的 excel 表,从现有的 excel 文件中删除所有其他选项卡)。
从中创建数据框的 excel 表最初是从网站下载的 csv 文件。操作后,我将数据框写入 Excel 表,稍后尝试使用 pywin32 打开时会抛出错误“工作簿类的打开方法失败”。手动打开文件时出现错误对话框
点击“是”,删除 xml 内容后,excel 将在修复后的版本中打开
所以,我想通了,这就是为什么我无法使用 pywin32 打开它。
使用 openpyxl 打开可以正常工作。但我需要为此目的使用 pywin32。
如何使用pywin32打开excel文件?
我尝试打开 excel 工作表的部分代码:
import win32com.client
excel_app = win32com.client.dynamic.Dispatch("Excel.Application")
excel_app.Interactive = False
excel_app.Visible = False
excel_app.DisplayAlerts = False
xlBook = excel_app.Workbooks.Open(main_file)
xlSheet = xlBook.Worksheets('PSA Data')
row_count=xlSheet.UsedRange.Rows.Count
print("Last row in the sheet Data in the main file=",row_count)
copyBook=excel_app.Workbooks.Open("fullpath\dataframe.xlsx") # dataframe is the name of excel workbook which has some xml content
copySheet=copyBook.Worksheets('PSA_data')
copy_row_count=copySheet.UsedRange.Rows.Count
print("Last row in the Copy sheet =",copy_row_count)
copySheet.Range(copySheet.Cells(1,1),copySheet.Cells(copy_row_count+1,10)).Copy(xlSheet.Range(xlSheet.Cells(row_count,1),xlSheet.Cells(row_count+1,10))) #copying data
xlBook.Close(SaveChanges=1)
copyBook.Close(SaveChanges=1)
del xlBook
del copyBook
excel_app.Quit()
del excel_app
错误
pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, 'Microsoft Excel', 'Open method of Workbooks class failed', 'xlmain11.chm', 0, -2146827284), None)
【问题讨论】:
-
可以加代码吗?
-
我添加了一部分代码
-
请将问题中的代码作为文本而不是图像插入。为了让人们能够帮助您,他们必须能够复制您的代码文本,以便他们可以运行和测试它。另请参阅here。
-
我感觉是xlsx文件中的xml内容导致了错误。如何从文件中删除它?