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

引言

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

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

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

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

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

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

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

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

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

正文

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

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

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

1# 调用word程序 2WordApp = win32com.client.Dispatch("Word.Application") 3# 调用excel程序 4WordApp = win32com.client.Dispatch("Excel.Application") 5 6# 打开word文档 7w.Documents.Open(path) 8# 打开Excel工作簿 9w.Workbooks.Open(path) 10 11# 后台运行,不显示,不警告 12WordApp.Visible = 0 13WordApp.DisplayAlerts = 0

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

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

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

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

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

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

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

1import os 2import time 3import win32com 4from win32com.client import Dispatch 5 6def xls_xlsx(path): 7   w = win32com.client.Dispatch('Excel.Application') 8   w.Visible = 0 9   w.DisplayAlerts = 0 10   wb = w.Workbooks.Open(path) 11   # 这里必须要绝对地址,保持和xls路径一致 12   newpath = allpath+'\\转换后的文档.xlsx' 13 14   wb.SaveAs(newpath,FileFormat = 51) 15   # doc.Close() 开启则会删掉原来的dxls 16   w.Quit()# 退出 17   return newpath 18allpath = os.getcwd() 19print(allpath) 20xls_xlsx(allpath+'\\转换前的文档.xls')

最终结果:

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

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

往期精彩文章推荐:

欢迎各位大佬点击链接加入群聊【helloworld开发者社区】:https://jq.qq.com/?_wv=1027&k=mBlk6nzX进群交流IT技术热点。

本文转自 https://mp.weixin.qq.com/s/KuEmgdKcpyoZCc1DcTXk0A,如有侵权,请联系删除。

点赞
收藏

评论区

加载中...

相关推荐

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

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

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

问题引入目前的日常工作中,见的最多的还是对Excel文件和Word文件的处理。对于Excel文件,如果出现xls、xlsx、xlsm混合文件应该怎么处理?对于Word文件,出现doc和docx的混合文件,又该怎么处理。你可能会用VBA,但是不得不说,批量操作这些文件,还是要学Python,操作真的很简单。为了增强文章的可读性,我们分2篇文章讲述这些问题