如何用python批量处理excel数据_如何用Python批量处理excel数据文件

博主分享了一次使用Python处理大量xls格式Excel文件的经历,遇到openpyxl库不支持xls格式的问题,通过VBA转换为xlsx格式,然后使用Python删除多余sheet。但最终发现朋友的Excel是2003版,不支持xlsx格式,通过官方工具解决了兼容性问题。文章强调了xlsx格式的重要性,并推荐了其他处理Excel的Python库。
摘要由CSDN通过智能技术生成

花开时节,想见你

小伙伴大家好,好久不见!最近一直在忙自己的事情。前两天朋友叫我帮他处理点excel文件,作为一个Python渣渣,脑中快速转了几下,完全可以解决,这也就为后面的倒腾打下了基础。

大概是这么个问题:一共有上千个后缀名为xls的excel文件,需要把每个文件里面的sheet1-sheet6删除。

首先一看到这个就想起了Pandas库,奈何自己不是很熟悉,此时记得小学老师告诉过我,可以用openpyxl这excel处理的库,小编心中窃喜,连忙感谢小学老师,这个时候相信用过这个库的小伙伴已经开始知道为我后面的悲剧打下了基础。

之前并没有接触过这个库,于是乎百度了删除sheet的源码,自己修改了一下,便完成朋友的要求。于是乎,开始运行代码。悲剧来了,表示不支持xls的excel文件,懵了,查了官网,如下图,只支持xlsx和xlsm这两个格式。源码放在下方。

c1cae634f42f1e887390d31413569245.jpg

import openpyxlimport os,sys#定义函数def main(): #将文件名读入列表中 dirs = os.listdir() #开始循环删除sheet for name in dirs: if name !="Delete_sheet.py": sExcelFile = name wb = openpyxl.load_workbook(sExcelFile) for sheet in range(6): ws = wb[f"Sheet{sheet+1}"] wb.remove(ws) wb.save(sExcelFile) else: continueif __name__ == "__main__": main() 于是乎,又开始百度,找到了一个VBA方法,可以直接把xls格式直接转化成xlsx格式。进程很是顺利。VBA源码如下

'***********访问当前文件夹下所有子文件夹及文件,Dim iFile(1 To 100000) As StringDim count As IntegerSub xls2xlsx() iPath = ThisWorkbook.Path On Error Resume Next count = 0 zdir iPath For i = 1 To count If iFile(i) Like "*.xls" And iFile(i) <> ThisWorkbook.FullName Then MyFile = iFile(i) FilePath = Replace(MyFile, ".xls", ".xlsx") If Dir(FilePath, 16) = Empty Then Set WBookOther = Workbooks.Open(MyFile) Application.ScreenUpdating = False ActiveWorkbook.SaveAs Filename:=FilePath, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False WBookOther.Close SaveChanges:=False '解决不能close 文件问题 Application.ScreenUpdating = True End If End If NextEnd SubSub zdir(p) '访问当前文件夹下所有子文件夹及文件 Set fs = CreateObject("scripting.filesystemobject") For Each f In fs.GetFolder(p).Files If f <> ThisWorkbook.FullName Then count = count + 1: iFile(count) = f Next For Each m In fs.GetFolder(p).SubFolders zdir m NextEnd Sub

把全部的格式转换完之后,开始用Python代码删除了多余的sheet文件。问题又来了,怎么把xlsx格式转成xls格式呢?小毕陷入了沉思,直接把VBA代码的改了一下,成功转成了xls格式,心中甚是欢喜。悲剧的又来了,朋友的电脑是2003版的EXCEL,直接打开乱码,于是有百度了一会儿,找到了官方的格式转换工具,如下图。这个工具转换效果比较的好,就是速度慢了一点,还有其他的功能,感兴趣的可以自己看看。

20aa1b2bb4f37295b64c1ee92d73e4a3.jpg下载连接:

https://otp.landian.vip/zh-cn/ 最后,这个问题才算解决。中间我用pandas转化过格式,转换的格式还是不能用。从这件事中,我想吐槽有些单位版本软件的版本太低了,能花点钱升级一下office的版本,xls格式的文档真的很不友善啊。最后提醒一下小伙伴,以后最好用xlsx格式的表格,不然后期的操作真的不友善。当然还有其他的库,比如Xlrd、xlwt、xlutils、xlwings、xlsxwriter、win32com、DataNitro。这些库都可以处理excel,知道的小伙伴可以在再看里面说一下看法哦。

这期的内容到这里就结束了,希望大家喜欢,也希望大家能够大力支持,广告费差不多有六十了,打算来个抽奖,抽本有限元的书籍,最近正在计划这个事。如果有啥好的想法可以后台给我留言。

97537e4e5e8ed70f880b182c236ed18b.jpg

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值