Python:Excel自动化实践入门篇 甲【留言点赞领图书门票】
*以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「englyf」https://mp.weixin.qq.com/s?__biz=MzUxMTgxMzExNQ==&mid=2247485524&idx=1&sn=7af7790002e0e606bc2ba63f3a9a7327&chksm=f96cbcc0ce1b35d6079e63cb87964541c716c8b6b5e9969bb06ff4bcae8460e46293f0d3f306&token=365526592&lang=zh_CN#rd
正文开始之前,先给朋友们宣布个好消息,文末有送图书和门票的福利活动,不要错过哦!
今天周五,马上就到下午6点钟,该下班的时候了,小菜一把抓起手机刷起微信。
突然,她老板跑来小菜身后拍了拍肩膀喊:“小菜啊,我这有几份 excel 表格”,把小菜吓了一跳,立马放下手里的手机。
老板继续说,“邮件发你了,里边都是这次的出货单,明天来加会儿班弄好它,辛苦一下哈!” 说完也不等回应就转身走了
“哎” 小菜狠狠地挤出一句话,却在心里嘀咕着要怎么应付领导的吩咐,“怎么那么倒霉?又来 Excel 表,偏偏又到周末了,头疼啊……哼 ”
虽然离她坐得很远,看着小菜这么苦恼,想起自己其实是个码农,手里也有点私货,于是我走过去把自己私藏了很多年的公众号推荐给了她。
说起办公自动化就离不开对 excel 表格的处理,现在哪个办公族不得每天面对着几份 excel 过日子?那么有没有想过,让机器帮我们自动处理这些杂活,而我们应该留给自己更多的时间去做一些更有意义的事情?
今天就带大家一起来看看怎么用 python 自动化处理 excel 表格!而处理 excel 表格的 python 功能库有很多,常用的是 openpyxl。openpyxl 库可以对 excel 表格做什么呢?比如读写、算术、绘制图表等等。
安装 openpyxl
openpyxl 库不是 python 的自带模块,属于第三方模块,所以需要额外安装才能使用。
在安装 openpyxl 库之前,建议先配置好 python 工程的虚拟环境 venv。这里不展开介绍如何配置虚拟环境,有需要可以点击 《Python:界面开发,wx入门篇 上》前往查看。
本文以下内容基于 windows 10 和 Python3.
终端输入
pip install openpyxl
终端输出
由于下面的介绍会用到图片操作的功能,所以还需要安装 Pillow 库。
终端输入
pip install pillow
终端输出
看看最后的安装成果,终端输入
pip list
终端输出
创建 excel 表格文件
最简单的自动化操作就是创建一个 excel 空白表格文件,暂定文件名为 test.xlsx,然后随意写点什么进去
import openpyxl
workbook = openpyxl.Workbook()
sheet = workbook.active
sheet['A1'] = 'hello pytho excel !'
workbook.save(filename="./test.xlsx")
上面的代码先是导入了库 openpyxl,然后实例化工作簿类 Workbook,通过工作簿的属性 active 获取到活跃的工作表 sheet。
基于字典的操作方式,对工作表 sheet 的 A 列 1 行写入字符串 ‘hello pytho excel !’。如果你使用过 excel 表格,会记得 excel 表格的行是从 1 开始的,列是从 A 开始的。
最后调用工作簿的 save 方法写入硬盘,自动生成文件 test.xlsx。
好了,代码写好怎么跑起来呢?
把上面写好的代码保存到文件(.py)中,我这里随意定为 main.py,然后在令行终端里输入并回车就会执行起来
python main.py
执行完毕后,打开程序创建好的 excel 文件 test.xlsx 看看
看起来效果很好。
写入
上面已经知道了怎么创建新的 excel 表格文件,那么怎么在已有的 excel 表格文件的指定单元格 cell 写入内容呢?
上面介绍的方法 Workbook() 会覆盖原有文件,为了不覆盖现有文件,可以改用方法 load_workbook() 同时传入文件名以加载现有的工作簿。
指定单元格有两种方式,通过表格 sheet 的方法 cell() 或者表格 sheet 直接引用单元格名称。
比如
a2 = sheet.cell(row = 2, column = 1)
a3 = sheet['A3']
找到了单元格 cell,又怎么写入内容呢?直接赋值还是修改属性值?答案是都可以,直接赋值就是对单元格 cell 对象赋值(要求引用单元格名称),修改属性是对单元格 cell 对象的 value 属性赋值
a2.value = "修改属性1"
a3.value = "修改属性2"
sheet['A4'] = "直接赋值"
来一段完整的代码
import openpyxl
workbook = openpyxl.load_workbook("./test.xlsx")
sheet = workbook.active
a2 = sheet.cell(row = 2, column = 1)
a3 = sheet['A3']
a2.value = "修改属性1"
a3.value = "修改属性2"
sheet['A4'] = "直接赋值"
workbook.save(filename="./test.xlsx")
看看运行效果
如果我们需要往表格里追加大量的数据呢?总不能像上面那样往单元格一个一个地写入吧?
可以使用表格 sheet 的 append() 方法一次性写入一行数据
import openpyxl
workbook = openpyxl.load_workbook("test.xlsx")
sheet = workbook.active
data = (
('a', 'b', 'c'),
('d', 'e', 'f')
)
for row in data:
sheet.append(row)
workbook.save('test.xlsx')
看看实际效果
读取
上面介绍了怎么对 excel 表格写入内容,那么怎么读出来呢?
读取单元格内容,可以直接读取单元格 cell 的属性 value 值
print(f"{sheet['A4'].value}")
print(f"{sheet.cell(row = 4,
column = 1).value}")
那么如果需要一次性读取一个区域的数据呢?
方法有两种,一种通过遍历指定区域内每个单元格的方式,另一种是通过单元格名称批量读取。
先介绍第一种:需要遍历每个单元格的内容,那么就需要知道行列的最大数量用于控制单元格循环遍历的次数,分别对应表格 sheet 的属性 max_row 和属性 max_column。
下面来试一下把第一列和第二行的所有单元格内容读取并打印出来
import openpyxl
workbook = openpyxl.load_workbook("test.xlsx")
sheet = workbook.active
row = sheet.max_row
column = sheet.max_column
print(f"Total Row num: {row}")
print(f"Total Column num: {column}")
print("\nValue of first column:")
for i in range(1, row + 1):
print(sheet.cell(row = i,
column = 1).value)
print("\nValue of second row")
for i in range(1, column + 1):
print(sheet.cell(row = 2,
column = i).value,
end = " ")
终端输出
接着介绍第二种:通过表格的单元格名称批量读取时,单元格名称分别对应矩形区域的左上角和右下角的单元格名称。这种方式类似对列表的切片操作。
下面来试一下批量读取单元格 A4 到单元格 C6 的矩形区域的内容,并打印出来
import openpyxl
workbook = openpyxl.load_workbook("test.xlsx")
sheet = workbook.active
cell_obj = sheet['A5:C6']
for cell1, cell2, cell3 in cell_obj:
print(cell1.value,
cell2.value,
cell3.value)
终端输出
图书 《Python+Excel报表自动化实战》
————————————
京东价:¥54.50
抢购链接:https://u.jd.com/Ks9SWZt
由于篇幅受限,本系列教程还未完结,下一篇《Python:Excel自动化实践入门篇 乙》将在本公众号稍后推送,如果你对此教程有兴趣或者想和我一起交流更多精彩内容,欢迎关注我的微信公众号 「ENG八戒」,等着你哦!
福利来了 !!!
这次搞了个双重福利,两份福利都可领取。
第一重,送图书,这本书是机械工业出版社出版的《Python+Excel报表自动化实战》。
请在评论区留言(主题围绕上述图书相关,不能与出海展会相关),并集赞,全文浏览量超过 1000 即统计每个评论集赞数量,集赞数量最多的一位获得赠送图书《Python+Excel报表自动化实战》一本。如果出现多位评论满足中奖条件则延后重新统计,等待浏览量增加超过 500 重新统计,依此类推,直到仅剩一位满足中奖条件。
第二重,送深圳福田出海展会门票若干,门票由 Cloud Ace 倾情赞助。
Cloud Ace 是谷歌云全球战略合作伙伴,拥有 300 多名工程师,也是谷歌最高级别合作伙伴,多次获得 Google Cloud 合作伙伴奖。作为谷歌托管服务商,提供谷歌云、谷歌地图、谷歌办公套件、谷歌云认证培训服务。
请在评论区留言(主题围绕出海展会相关,不能与上述图书相关),并集赞,全文浏览量超过 800 即统计每个评论集赞数量,集赞数量最多的一位获得赠送门票一张。如果出现多位评论满足中奖条件则延后重新统计,等待浏览量增加超过 400 重新统计,依此类推,直到仅剩一位满足中奖条件。
**【温馨提示:本活动同时在稀土掘金、博客园、微信公众号举办,互不干扰,欢迎各平台搜索博主 ENG八戒 参与最新活动】**
Python:Excel自动化实践入门篇 甲【留言点赞领图书门票】的更多相关文章
- 学习笔记之盘一盘 Python 系列 1 & 2 - 入门篇
盘一盘 Python 系列 1 & 2 - 入门篇 https://mp.weixin.qq.com/s?__biz=MzIzMjY0MjE1MA==&mid=2247486473&a ...
- python学习之路入门篇
本文是up学习python过程中遇到的一些问题及总结归纳,本小节是入门篇. python基本语法 循环.分支不多赘述. 模块:一个.py文件就是一个模块. 文件和异常 模式 含义解释 “r” 读模式 ...
- 小白的 Python 修炼手册:入门篇
Life is short, you need Python.(人生苦短,我用 Python.) --Bruce Eckel 前言 听说现在是全民 Python 的时代,虽然不知道事实如何,但学会 P ...
- web自动化-selenium 入门篇
selenium安装介绍 selenium是web浏览器的自动化工具 官网:https://www.selenium.dev 构成: WebDriver: 浏览器提供的浏览器api来控制浏览器(模拟用 ...
- 学习python之路_入门篇A
偶尔经同事的介绍进入了金角大王的博客里,看到大王编写的文章都是关于python编程的,由于自己一直也是做软件测试方面的工作,也一直想往自动化测试方面发展,了解到利用python可以进行自动化测试操作, ...
- python接口自动化11-pytest入门
前言 pytest是一个非常成熟的全功能的Python测试框架,适合从简单的单元到复杂的功能测试,主要特点有以下几点: 简单灵活,容易上手: 支持参数化: 能够支持简单的单元测试: 标记测试功能与属性 ...
- Python 内置界面开发框架 Tkinter入门篇 乙
本文大概 1685 个字,阅读需花 6 分钟内容不多, 但也花了一些精力如要交流, 欢迎关注我然后评论区留言 谢谢你的点赞收藏分享 这篇文章属于系列文章<Python 内置界面开发框架 Tkin ...
- Python selenium自动化测试框架入门实战--登录测试案例
本文为Python自动化测试框架基础入门篇,主要帮助会写基本selenium测试代码又没有规划的同仁.本文应用到POM模型.selenium.unittest框架.configparser配置文件.s ...
- 用Python让单片机“行动”起来——MicroPython实战入门篇
MicroPython以微控制器作为目标,从而使得Python可以用来控制硬件.说到MicroPython,也许有人会感到陌生.而说到和它密切相关的Python,是否会恍然大悟呢?Python属于解释 ...
- Python网络爬虫入门篇
1. 预备知识 学习者需要预先掌握Python的数字类型.字符串类型.分支.循环.函数.列表类型.字典类型.文件和第三方库使用等概念和编程方法. 2. Python爬虫基本流程 a. 发送请求 使用 ...
随机推荐
- SSH(四)控制层、业务层、dao层类的创建以及applicationcontext.xml和struts.xml配置
ssh框架的运作方式就是页面请求控制层,控制层调用dao层的方法,dao层完成对数据的操作的一个过程. 现在我们初步简单编写各层的class. action控制层: ActionSupport:实现了 ...
- chrom jsonview的使用
在开发中,我们可能要为不同的系统提供接口,并以说明文档的形式提供接口说明,但我们提供的返回json往往会在页面上乱成一团. 这里我们推荐chrome浏览器的小插件jsonview,他不但有利于我们对接 ...
- requests模块和openpyxl模块
第三方模块的下载和使用 1,第三方模块就是别人大神们已经写好的模块,功能特别强大.我们如果像使用第三方模块就先要进行下载.下载完成后 才可以在python中直接调用 2.下载方式一:pip工具 pip ...
- 微软宣布 S2C2F 已被 OpenSSF 采用
开源供应链安全对大多数 IT 领导者来说是个日益严峻的挑战,围绕确保开发人员在构建软件时如何使用和管理开源软件 (OSS) 依赖项的稳健策略至关重要.Microsoft 发布安全供应链消费框架 (S2 ...
- 常用内置模块os sys json
今日内容回顾 目录 今日内容回顾 os模块 sys模块 json模块 json模块实战 os模块 sys模块 json模块 os模块 os模块主要与代码运行的操作系统打交道 1.创建目录(文件夹) i ...
- STL list容器API
list容器:链表容器,不支持随机遍历.不能用通用的sort算法(要有随机访问迭代器),容器自己有排序算法 #define _CRT_SECURE_NO_WARNINGS #include<io ...
- [MySQL] 索引的使用、SQL语句优化策略
目录 索引 什么是索引 索引的创建与删除 创建索引 删除索引 索引的使用 使用explain分析SQL语句 最佳左前缀 索引覆盖 避免对索引列进行额外运算 SQL语句优化 小表驱动大表 索引 什么是索 ...
- idea 函数名灰色
idea被引用的方法名突然全部灰掉了 idea被引用的方法名突然全部灰掉了[已解决]_weixin_42554373的博客-CSDN博客_idea方法名灰色
- 为什么网络I/O会被阻塞?
摘要:I/O 其实就是 input 和 output 的缩写,即输入/输出. 本文分享自华为云社区<为啥网络IO会被阻塞呢>,作者: 龙哥手记. 我们应该都知道 socket(套接字),你 ...
- LRU 缓存
力扣题目 146. LRU 缓存 实现 LRU 缓存需要用到哈希链表 LinkedHashMap. LinkedHashMap 是由哈希表和双链表结合而成的,它的结构如下所示. 用自带的 Linked ...