当前位置: 首页 > 后端技术 > Python

Python:Excel自动化实战入门A篇【书票】

时间:2023-03-26 15:00:01 Python

*以下内容为本人学习笔记,如需转载请声明原文链接微信公众号「englyf」https://mp.weixin.qq.com/s?\_\_biz=MzUxMTgxMzExNQ==&mid=2247485524&idx=1&sn=7af7790002e0e606bc2ba63f3a9a7327&chksm=f96cbcc0ce1b35d6079e63cb87964541c716c8b6b5e9969bb06ff4bcae8460e46293f0d3f306&token=365526592&lang=zh\_CN#rd***文字开始之前,先给朋友们宣布个好消息,文末有送图书和门票福利活动不要错过!今天是周五,下午六点多,该下班了。小菜抓起手机刷微信。突然,她的老板跑到小菜身后拍着她的肩膀喊道:“小菜,我这里有一些excel表格”,把小菜吓了一跳,立刻放下了手里的手机。老板继续说道:“邮件已经发给你了,里面有这次的发货单,明天加班过来修好,辛苦了!”说完,不等对方回应,转身就走。挤出一句话,心里却嘀咕着怎么应对领导的命令,“你怎么这么倒霉?我又来Excel表了,正好又是周末,头疼。”..哼”虽然坐得离她很远,但看着看着小菜好心疼,又想起来自己其实是个码农,手上也有些私货,于是走过去推荐致我隐藏多年的她公众号。《ENG八戒》说到办公自动化,就离不开excel表格的处理。现在哪个上班族每天要面对好几份excel?那么有没有想过让机器自动帮我们处理这些杂事,我们应该给自己留出更多的时间去做一些更有意义的事情呢?今天就带大家看看如何使用python自动处理excel表格!处理excel表格的python函数库很多,常用的是openpyxl。openpyxl库可以用excel表做什么?如读写、算术、画图等。安装openpyxlopenpyxl库不是python自带的模块,而是第三方模块,所以需要额外安装才能使用。在安装openpyxl库之前,建议先配置好python项目的虚拟环境venv。如何配置虚拟环境这里就不介绍了。如有需要,您可以点击《Python:界面开发,wx入门篇 上》查看。本文以下内容基于windows10和Python3。终端输入pipinstallopenpyxl终端输出由于下面的介绍会用到图像处理的功能,所以还需要安装Pillow库。终端输入pipinstallpillow终端输出看最后的安装结果,终端输入piplist终端输出创建一个excel表格文件最简单的自动化操作就是创建一个excel空白表格文件,暂定文件名为test.xlsx,然后写点什么importopenpyxlworkbook=openpyxl.Workbook()sheet=workbook.activesheet['A1']='hellopythonexcel!'workbook.save(filename="./test.xlsx")上面的代码首先导入libraryopenpyxl,然后实例化工作簿类Workbook,通过工作簿的属性active获取活动工作表sheet。根据字典的运行方式,写入字符串'hellopythonexcel!'到工作表A列的第1行。如果你用过excel表格,你会记得excel表格的行是从1开始,列是从A开始。最后调用工作簿的save方法写入硬盘,自动生成文件test。xlsx。那么,代码写好后如何运行呢?把上面写的代码保存到一个文件(.py)中,我这里选择的是main.py,然后在命令行终端输入回车执行。执行完pythonmain.py后,打开程序,创建看excel文件test.xlsx,貌似运行正常。写上面已经知道如何新建一个excel表格文件,那么如何在已有excel表格文件的指定单元格单元格中写入内容呢?上述方法Workbook()将覆盖原始文件。为了不覆盖已有的文件,可以改用load\_workbook()方法,传入文件名加载已有的工作簿。指定单元格有两种方式,通过表格sheet的方法cell()或者直接通过表格sheet引用单元格名称。比如a2=sheet.cell(row=2,column=1)a3=sheet['A3']找到cell单元格,内容怎么写?直接赋值还是修改属性值?答案是肯定的,直接赋值就是给单元格对象赋值(单元格名称是必须的),修改属性就是给单元格对象的value属性赋值a2.value="修改属性1"a3.value="Modifyattribute2"sheet['A4']="直接赋值"到一个完整的代码导入=2,column=1)a3=sheet['A3']a2.value="修改属性1"a3.value="修改属性2"sheet['A4']="直接赋值"workbook.save(filename="./test.xlsx")看运行效果。如果我们需要向表中添加大量数据怎么办?不能像上面那样一个一个地写到单元格吗?可以使用sheet的append()方法一次写入一行数据importopenpyxlworkbook=openpyxl.load_workbook("test.xlsx")sheet=workbook.activedata=(('a','b','c'),('d','e','f'))forrowindata:sheet.append(row)workbook.save('test.xlsx')看实际效果看上面介绍了如何向excel表中写入内容,那么如何读取呢?读取单元格内容,可以直接读取单元格的属性值cellprint(f"{sheet['A4'].value}")print(f"{sheet.cell(row=4,column=1).value}")那么如果需要一次性读取一个区域的数据怎么办呢?方法有两种,一种是遍历指定区域的每个单元格,另一种是通过批量读取单元格名称首先介绍第一种:需要遍历每个单元格的内容,那么需要知道最大行数和列数来控制单元格循环遍历的次数,对应属性max\_row和表格sheet的属性分别为max\_column.让我们尝试读取并打印第一列和第二行中的所有单元格内容.max_rowcolumn=sheet.max_columnprint(f"TotalRownum:{row}")print(f"TotalColumnnum:{column}")print("\n第一列的值:")foriinrange(1,row+1):print(sheet.cell(row=i,column=1).value)print("\n第二行的值")foriinrange(1,column+1):print(sheet.cell(row=2,列=i).value,end="")终端输出则引入第二种:通过表格的单元格名称批量读取时,单元格名称分别对应矩形区域左上角和右下角的单元格名称.这种方法类似于列表的切片操作。我们来尝试批量读取A4单元格到C6单元格的矩形区域的内容打印出来cell1,cell2,cell3incell_obj:print(cell1.value,cell2.value,cell3.value)终端输出book《Python+Excel报表自动化实战》——————————————京东价格:¥54.50购买链接:https://u.jd.com/Ks9SWZt由于篇幅有限,本系列教程还没有结束。下一篇《Python:Excel自动化实践入门篇 乙》会在这个《Python:Excel自动化实践入门篇 乙》稍后推送。如果你对这个教程感兴趣或者想和我分享我们一起交流更多精彩内容,欢迎关注我的微信公众号“ENG八戒”,等你哦!福利来了!!!这一次,创造了双重利益,两种利益都能得到。首先是送书,这本书是机械工业出版社《Python+Excel报表自动化实战》出版的。请点击传送门参与第二轮,获得深圳福田海外展门票多张。门票由CloudAce赞助。参与收藏请点击传送门【温馨提示:本次活动将在稀土掘金、博客园、微信公众号同时进行,互不干扰。欢迎各平台搜索博主ENG八戒参与最新活动】