win32com.client 自我终止问题

0 投票
1 回答
959 浏览
提问于 2025-04-18 11:27

我正在使用Python 3.3.5,想把一个Excel 2003文件(.xls)保存为Excel 2007文件(.xlsx)。我遇到的问题是,下面的代码在Spyder里运行得很好,但如果我直接双击这个脚本,它就不工作了。

在Spyder中,win32com.client可以正常导入,并且脚本可以成功运行;但是在IDLE中就不行,出现了这个错误:

"import win32api, sys, os "

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

通过win32com.client进行Excel文件转换的脚本

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

很遗憾,pywin32 有时候安装不太顺利。你可以尝试以下几种方法(按这个顺序):

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

  • 把你找到的 pythoncom33.dll 的路径添加到你的 Windows PATH 环境变量中。这个文件可能在 Python 的根目录下,或者更深的文件夹里。

  • pythoncom33.dll 复制到 C:\Python33\Lib\site-packages\win32 这个位置。

  • 如果不行的话,你可以试试一些已经包含了 pywin32 的软件包,比如 AnacondaCanopy 或者 WinPython

记得根据需要调整你的路径。

撰写回答