win32com.client 自我终止问题
我正在使用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
的软件包,比如Anaconda
、Canopy
或者WinPython
。
记得根据需要调整你的路径。