win32com.client自我终止问题

时间:2014-06-29 02:19:19

标签: python excel win32com spyder

我正在使用Python 3.3.5并尝试将Excel 2003文件(.xls)另存为Excel 2007文件(.xlsx)。以下脚本的问题是,如果我在Spyder中运行它,脚本运行得很好,但是如果我尝试运行它只需双击脚本,它就不起作用。

Spyder可以毫无问题地导入win32com.client并成功运行脚本,而IDLE无法运行脚本并发出错误:

“import win32api,sys,os”

“ImportError:DLL加载失败:找不到指定的模块。”

Excel_File_Conversion脚本通过win32com.client

fname = filedialog.askopenfilename(filetypes=(("Excel files", "*.xls;*.xlsx"),
                                              ("All files", "*.*") ))
fname = fname.replace("/",os.path.sep)
if fname[-1] != 'x':
    try:
        import win32com.client as win32 
        excel = win32.gencache.EnsureDispatch('Excel.Application')
        wb = excel.Workbooks.Open(fname)
        messagebox.showinfo(title = "Conversion",
                            message="Excel 2003(.xls) format was converted to Excel 2007(.xlsx) format",
                            detail = "Press OK to continue")
        wb.SaveAs(fname+"x", FileFormat = 51)
        wb.Close()
        excel.Application.Quit()
        fname = fname+"x"
    except TypeError:
        messagebox.showerror(title = "Error", message="File could not be opened")

PS:双击运行脚本没有问题。

1 个答案:

答案 0 :(得分:0)

不幸的是,pywin32并不总是正确安装。您可以尝试一些事项(按此顺序):

  • 在命令提示符中(您可能需要右键单击并以“以管理员身份运行”)运行python C:\Python33\Scripts\pywin32_postinstall.py -install

  • 将找到pythoncom33.dll的路径添加到Windows PATH。它可能位于Python根目录下或更进一步。

  • pythoncom33.dll复制到C:\Python33\Lib\site-packages\win32

  • 否则,您可能需要尝试其中包含pywin32AnacondaCanopy

    WinPython附带的分发之一LI>

始终相应地调整路径。