热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

花开时节,想见你小伙伴大家好,好久不见!最近一直在忙自己的事情。前两天朋友叫我帮他处理点excel文件,作为一个Python

花开时节,想见你

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

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

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

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

84fe0feffc39791776637338c3ce7be5.png

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源码如下

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

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

955fc5d79f57ea598ec4e7de3b782077.png

下载连接&#xff1a;

https://otp.landian.vip/zh-cn/

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

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

你是最棒的&#xff01;

02b15293e25d6fdb592ec0b9d8abedd9.png

让你在学习路上不再孤单

我知道你在看

7e1e3320dd4ffa3c05a44c545a49e7c2.png



推荐阅读
author-avatar
xz7777
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有