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

向量数据库企业应用增长营销

picture.image

引言

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

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

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

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

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

picture.image

正文

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

  • 上一篇文章,由于处理的是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文件的格式是最多的,这里我再给大家做一个总结,给你加深一下印象。

picture.image

这里需要强调一下:后面的代码里,我们在使用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')
        
      

最终结果:

picture.image

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

更多阅读

2020 年最佳流行 Python 库 Top 10

2020 Python中文社区热门文章 Top 10

5分钟快速掌握 Python 定时任务框架

特别推荐

picture.image

picture.image

点击下方阅读原文加入 社区会员

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
KubeZoo: 轻量级 Kubernetes 多租户方案探索与实践
伴随云原生技术的发展,多个租户共享 Kubernetes 集群资源的业务需求应运而生,社区现有方案各有侧重,但是在海量小租户的场景下仍然存在改进空间。本次分享对现有多租户方案进行了总结和对比,然后提出一种基于协议转换的轻量级 Kubernetes 网关服务:KubeZoo,该方案能够显著降低多租户控制面带来的资源和运维成本,同时提供安全可靠的租户隔离性。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论