Excel中的xls、xlsx、xlsm混合文件,看我用Python如何统一处理......

Stella981
• 阅读 377

点击上方“Python爬虫与数据挖掘”,进行关注

回复“书籍”即可获赠Python从入门到进阶共10本电子书

洞房昨夜停红烛,待晓堂前拜舅姑。

引言

Python语言,近几年在办公自动化这一领域来说,真的超级火爆!用它做批量处理确实比VBA要方便很多。

前面的文章,我们已经讲述了如何将doc文件转换为docx文件,还没有观看的朋友直接戳此链接:

Excel中的xls、xlsx、xlsm混合文件,看我用Python如何统一处理......

python-docx无法处理 “doc格式” 文件,于是我这样做......

今天黄同学再带大家探讨Python处理Excel文件时,遇到的一些问题。在Python中,有几个常用的库专门用来处理Excel文件,分别是xlrd、xlwt和openpyxl,简单介绍一下:

  • xlrd 只能读取数据,可以处理xls和xlsx;

  • xlwt 只能写数据,只能处理xls;

  • openpyxl 可以读数据和写数据,但只能处理xlsx;

如果待处理的文件,既有xls,又有xlsx时,我觉得还是将它们一并转换为统一格式,再进行二次修改,显得更为方便。

同时,这里还有一种Excel文件,就是xlsm格式,该表格文件却很少被其他库支持。这种情况下,如果我们电脑有安装微软的Excel软件(非wps),就可以通过调用本地excel软件对表格文件进行格式转换,然后我们再进行其它操作。

Excel中的xls、xlsx、xlsm混合文件,看我用Python如何统一处理......

正文

再给代码之前,我仍然给大家讲述一些知识点,方便大家一读就会。

  • 上一篇文章,由于处理的是Word文档,因此这里 调用的是Word程序 ,那处理Excel文档,这里就需要 调用Excel程序 了;

  • 在Python中,文档用 Documents 表示,工作簿用 Workbooks 表示,因此处理不同的文件,我们需要调用不同的属性,打开对应的文件;

    调用word程序WordApp = win32com.client.Dispatch("Word.Application")# 调用excel程序WordApp = win32com.client.Dispatch("Excel.Application")# 打开word文档w.Documents.Open(path)# 打开Excel工作簿w.Workbooks.Open(path)# 后台运行,不显示,不警告WordApp.Visible = 0WordApp.DisplayAlerts = 0

Excel文件的格式是最多的,这里我再给大家做一个总结,给你加深一下印象。

Excel中的xls、xlsx、xlsm混合文件,看我用Python如何统一处理......

这里需要强调一下:后面的代码里,我们在使用SaveAs保存时,会用到一个FileFormat属性,其中:

  • FileFormat= 51 ,表示xlsx扩展文件;

  • FileFormat= 56 ,表示xls扩展文件;

  • FileFormat= 52 ,表示xlsm扩展文件;

  • FileFormat= 23 ,表示csv扩展文件;

好了,前期准备知识讲述完毕,这里直接给大家上代码。

import osimport timeimport win32comfrom win32com.client import Dispatchdef xls_xlsx(path):   w = win32com.client.Dispatch('Excel.Application')   w.Visible = 0   w.DisplayAlerts = 0   wb = w.Workbooks.Open(path)   # 这里必须要绝对地址,保持和xls路径一致   newpath = allpath+'\\转换后的文档.xlsx'   wb.SaveAs(newpath,FileFormat = 51)   # doc.Close() 开启则会删掉原来的dxls   w.Quit()# 退出   return newpathallpath = os.getcwd()print(allpath)xls_xlsx(allpath+'\\转换前的文档.xls')

最终结果:

Excel中的xls、xlsx、xlsm混合文件,看我用Python如何统一处理......

本文讲述完毕,代码附有注释,相信大家可以看明白,一篇文章总要留给大家一点思考空间,这里就不再过多赘述。

**********---**--****-------------- End **********---**--****--------------

往期精彩文章推荐:

Excel中的xls、xlsx、xlsm混合文件,看我用Python如何统一处理......

欢迎大家点赞,留言,转发,转载,****感谢大家的相伴与支持

想加入Python学习群请在后台回复【入群

万水千山总是情,点个【在看】行不行

/今日留言主题/

随便说一两句吧~~

本文分享自微信公众号 - Python爬虫与数据挖掘(crawler_python)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
秃头王路飞 秃头王路飞
5个月前
webpack5手撸vue2脚手架
webpack5手撸vue相信工作个12年的小伙伴们在面试的时候多多少少怕被问到关于webpack方面的知识,本菜鸟最近闲来无事,就尝试了手撸了下vue2的脚手架,第一次发帖实在是没有经验,望海涵。languageJavaScript"name":"vuecliversion2","version":"1.0.0","desc
浅梦一笑 浅梦一笑
5个月前
初学 Python 需要安装哪些软件?超级实用,小白必看!
编程这个东西是真的奇妙。对于懂得的人来说,会觉得这个工具是多么的好用、有趣,而对于小白来说,就如同大山一样。其实这个都可以理解,大家都是这样过来的。那么接下来就说一下python相关的东西吧,并说一下我对编程的理解。本人也是小白一名,如有不对的地方,还请各位大神指出01名词解释:如果在编程方面接触的比较少,那么对于软件这一块,有几个名词一定要了解,比如开发环
blmius blmius
1年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
技术小男生 技术小男生
5个月前
linux环境jdk环境变量配置
1:编辑系统配置文件vi/etc/profile2:按字母键i进入编辑模式,在最底部添加内容:JAVAHOME/opt/jdk1.8.0152CLASSPATH.:$JAVAHOME/lib/dt.jar:$JAVAHOME/lib/tools.jarPATH$JAVAHOME/bin:$PATH3:生效配置
刚刚好 刚刚好
5个月前
css问题
1、在IOS中图片不显示(给图片加了圆角或者img没有父级)<div<imgsrc""/</divdiv{width:20px;height:20px;borderradius:20px;overflow:h
Karen110 Karen110
1年前
Excel中的xls、xlsx、xlsm混合文件,看我用Python如何统一处理......
引言Python语言,近几年在办公自动化这一领域来说,真的超级火爆!用它做批量处理确实比VBA要方便很多。前面的文章,我们已经讲述了如何将doc文件转换为docx文件,还没有观看的朋友直接戳此链接:(http://mp.weixin.qq.com/s?bizMzkwNDE5NTc0Ng&mid2247514428&idx1&sn1f8720112f6a88
小森森 小森森
5个月前
校园表白墙微信小程序V1.0 SayLove -基于微信云开发-一键快速搭建,开箱即用
后续会继续更新,敬请期待2.0全新版本欢迎添加左边的微信一起探讨!项目地址:(https://www.aliyun.com/activity/daily/bestoffer?userCodesskuuw5n)\2.Bug修复更新日历2.情侣脸功能大家不要使用了,现在阿里云的接口已经要收费了(土豪请随意),\\和注意
晴空闲云 晴空闲云
5个月前
css中box-sizing解放盒子实际宽高计算
我们知道传统的盒子模型,如果增加内边距padding和边框border,那么会撑大整个盒子,造成盒子的宽度不好计算,在实务中特别不方便。boxsizing可以设置盒模型的方式,可以很好的设置固定宽高的盒模型。盒子宽高计算假如我们设置如下盒子:宽度和高度均为200px,那么这会这个盒子实际的宽高就都是200px。但是当我们设置这个盒子的边框和内间距的时候,那
艾木酱 艾木酱
5个月前
快速入门|使用MemFire Cloud构建React Native应用程序
MemFireCloud是一款提供云数据库,用户可以创建云数据库,并对数据库进行管理,还可以对数据库进行备份操作。它还提供后端即服务,用户可以在1分钟内新建一个应用,使用自动生成的API和SDK,访问云数据库、对象存储、用户认证与授权等功能,可专
helloworld_28799839 helloworld_28799839
5个月前
常用知识整理
Javascript判断对象是否为空jsObject.keys(myObject).length0经常使用的三元运算我们经常遇到处理表格列状态字段如status的时候可以用到vue