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

Karen110
• 阅读 1782

引言

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 = 0  
WordApp.DisplayAlerts = 0

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

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

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

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

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

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

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

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

import os  
import time  
import win32com  
from win32com.client import Dispatch  

def 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 newpath  
allpath = os.getcwd()  
print(allpath)  
xls_xlsx(allpath+'\\转换前的文档.xls')

最终结果:

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

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

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

往期精彩文章推荐:

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

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

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

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
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
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Karen110 Karen110
2年前
python-docx无法处理 “doc格式” 文件,于是我这样做......
问题引入目前的日常工作中,见的最多的还是对Excel文件和Word文件的处理。对于Excel文件,如果出现xls、xlsx、xlsm混合文件应该怎么处理?对于Word文件,出现doc和docx的混合文件,又该怎么处理。你可能会用VBA,但是不得不说,批量操作这些文件,还是要学Python,操作真的很简单。为了增强文章的可读性,我们分2篇文章讲述这些问题
Stella981 Stella981
2年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Stella981 Stella981
2年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Stella981 Stella981
2年前
Excel中的xls、xlsx、xlsm混合文件,看我用Python如何统一处理......
点击上方“Python爬虫与数据挖掘”,进行关注回复“书籍”即可获赠Python从入门到进阶共10本电子书今日鸡汤洞房昨夜停红烛,待晓堂前拜舅姑。引言Python语言,近几年在办公自动化这一领域来说,真的超级火爆!用它做批量处理确实比VBA要方便很多。前面的文章,我们已经讲述了如何将do
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这