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

Python中文社区

共 1724字,需浏览 4分钟

 ·

2021-01-29 11:15

引言

Python语言,近几年在办公自动化这一领域来说,真的超级火爆!用它做批量处理确实比VBA要方便很多。
今天带大家探讨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表示,因此处理不同的文件,我们需要调用不同的属性,打开对应的文件;
# 调用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文件的格式是最多的,这里我再给大家做一个总结,给你加深一下印象。
这里需要强调一下:后面的代码里,我们在使用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')
最终结果:

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

更多阅读



2020 年最佳流行 Python 库 Top 10


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


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

特别推荐




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

浏览 36
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报