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

首先先说一个棘手的问题【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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值