无法打开Excel文件

时间:2017-11-16 08:28:21

标签: python excel pandas

我正在尝试在Excel工作表中自动执行某些任务。

它包括从Excel工作表中创建一个pandas数据框,然后进行必要的过滤和填充,并将pandas数据框写入Excel工作表,稍后附加到另一个Excel工作表 (因为pandas总是创建一个新的Excel工作表,从现有的excel文件中删除所有其他选项卡)。

创建数据框的Excel工作表最初是从站点下载的csv文件。在操作之后,我将数据帧写入excel表,当稍后尝试使用pywin32打开时,将抛出错误"工作簿类的Open方法失败"。手动尝试打开文件时,出现错误对话框 enter image description here

点击"是",删除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)

1 个答案:

答案 0 :(得分:0)

事实证明问题是由于pandas数据帧中的xml内容。在将数据框转换为Excel时,我做了如下改动:

writer = pd.ExcelWriter(temp_file,engine="xlsxwriter",options={'strings_to_formulas': False})

这解决了问题:)