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

Stella981
• 阅读 780

点击上方“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源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
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
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Karen110 Karen110
3年前
Excel中的xls、xlsx、xlsm混合文件,看我用Python如何统一处理......
引言Python语言,近几年在办公自动化这一领域来说,真的超级火爆!用它做批量处理确实比VBA要方便很多。前面的文章,我们已经讲述了如何将doc文件转换为docx文件,还没有观看的朋友直接戳此链接:(http://mp.weixin.qq.com/s?bizMzkwNDE5NTc0Ng&mid2247514428&idx1&sn1f8720112f6a88
Stella981 Stella981
3年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Stella981 Stella981
3年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
可莉 可莉
3年前
10行Python代码自动清理电脑内重复文件,解放双手!
点击上方“Python爬虫与数据挖掘”,进行关注回复“书籍”即可获赠Python从入门到进阶共10本电子书今日鸡汤世间行乐亦如此,古来万事东流水。!(https://oscimg.oschina.net/oscnet/da5385ecbd59492aa127c14a1a5b807c.jpg)(h
Stella981 Stella981
3年前
Python3 网络爬虫:下载小说的正确姿势
点击上方“Python爬虫与数据挖掘”,进行关注回复“书籍”即可获赠Python从入门到进阶共10本电子书今日鸡汤少年心事当拂云。!(https://oscimg.oschina.net/oscnet/09902b71501b9e8c3cb656b5dfbbb0552e0.jpg)1
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这