Python针对Excel处理(卸载干净),以及报错‘CLSIDToClassMap‘的解决办法

tech2023-02-10  88

首先先说一个棘手的问题【Excel卸载】

相信大家都做过重装系统呀、重装office或者office认证码过期去找方法破解。那我今天给大家分享一个一个很好并且卸载很干净的东西,链接先附着,接招吧! 【https://answers.microsoft.com/zh-hans/msoffice/forum/all/%C8%E7%BA%CE%CD%EA%C8%AB%B5%C4/79d4b420-e377-4ac2-b36b-1eea35244a47】这里面存在了两种方式去卸载,手动和自动!博主选择的使用自动的卸载,卸载的特别干净,截图low一眼 【注意】:对于不使用Python配合处理Excel的童鞋们,这个已经特别干净了,他会给你清除你所有的关于office的杂七杂八的文件夹,你也可以直接安装最新的2019或者365版本,强烈推荐特别好用!但是对于要使用Python处理Excel的程序猿们‘可能’会存在一些小问题,往往这些小问题就很容易让人奔溃!

目的:使用Python将一个下载好的xls文件修改为xlsx后缀的文件

相信很多人会回答:这很简单呀,右击文件夹修改一下就可以了。大错特错!!!你可以自己试一下,假设将一个csv文件你用两种方式去修改后缀: 第一种:直接右击文件修改后缀名称,你会发现他的文件大小不会发生变化,自己可以百度一下原因 第二种:你打开这个CSV文件然后点击文件-另存为xlsx格式,你会发现他的大小发生了变化 原因其实很简单:这两种方式的编码是不一致的!

解决方法

而我们希望的是通过代码将xls文件变为xlsx文件,其实Python中有关于处理Excel的第三方库【所以说Python很强大】----pywin32 这里给你个简单安装方法:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pywin32 使用国内清华源,快捷且安全!

好了!话不多说上代码

fname = "C:\\Users\\admin\\Desktop\\自动化\\数据" + day_30 + "-" + yesterday + ".xls" excel = win32.gencache.EnsureDispatch('Excel.Application') wb = excel.Workbooks.Open(fname) wb.SaveAs(fname + "x", FileFormat=51) # FileFormat = 51 is for .xlsx extension wb.Close() # FileFormat = 56 is for .xls extension excel.Application.Quit() df = pd.read_excel( io=r'./数据' + day_30 + '-' + yesterday + '.xlsx', ) print(df)

【解读】:这里是想把目前的xls文件转换为xlsx文件,然后通过pandas读取,返回数据。

重点来了,敲黑板

如果你要是office没有卸载干净,他会直接报错你打不开Excel可能还会报错AttributeError: module ‘win32com.gen_py.00020813-0000-0000-C000-000000000046x0x1x9’ has no attribute ‘CLSIDToClassMap’

解决方法: 【1】直接打开你的c盘然后搜索gen_py,找到后注意删除以下这个文件: 切记只删除标注的红色文件,不可以删除下面的文件夹,如果你删除了,那好吧重新卸载与安装!!

【2】或者用pip uninstall pywin32 卸载再安装,因为有病毒误杀win32com.gen_py 建议使用第一种,第二种博主试过了有的电脑可以,有的还是有问题,所以还是吐槽一下Windows这个系统,建议大家还是多用linux系统,不会存在一些诡异的问题,尤其是编码问题。

最后还是希望大家多多支持博主!
最新回复(0)