*以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「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自动化实践入门篇 甲【留言点赞领图书门票】的更多相关文章

  1. 学习笔记之盘一盘 Python 系列 1 & 2 - 入门篇

    盘一盘 Python 系列 1 & 2 - 入门篇 https://mp.weixin.qq.com/s?__biz=MzIzMjY0MjE1MA==&mid=2247486473&a ...

  2. python学习之路入门篇

    本文是up学习python过程中遇到的一些问题及总结归纳,本小节是入门篇. python基本语法 循环.分支不多赘述. 模块:一个.py文件就是一个模块. 文件和异常 模式 含义解释 “r” 读模式 ...

  3. 小白的 Python 修炼手册:入门篇

    Life is short, you need Python.(人生苦短,我用 Python.) --Bruce Eckel 前言 听说现在是全民 Python 的时代,虽然不知道事实如何,但学会 P ...

  4. web自动化-selenium 入门篇

    selenium安装介绍 selenium是web浏览器的自动化工具 官网:https://www.selenium.dev 构成: WebDriver: 浏览器提供的浏览器api来控制浏览器(模拟用 ...

  5. 学习python之路_入门篇A

    偶尔经同事的介绍进入了金角大王的博客里,看到大王编写的文章都是关于python编程的,由于自己一直也是做软件测试方面的工作,也一直想往自动化测试方面发展,了解到利用python可以进行自动化测试操作, ...

  6. python接口自动化11-pytest入门

    前言 pytest是一个非常成熟的全功能的Python测试框架,适合从简单的单元到复杂的功能测试,主要特点有以下几点: 简单灵活,容易上手: 支持参数化: 能够支持简单的单元测试: 标记测试功能与属性 ...

  7. Python 内置界面开发框架 Tkinter入门篇 乙

    本文大概 1685 个字,阅读需花 6 分钟内容不多, 但也花了一些精力如要交流, 欢迎关注我然后评论区留言 谢谢你的点赞收藏分享 这篇文章属于系列文章<Python 内置界面开发框架 Tkin ...

  8. Python selenium自动化测试框架入门实战--登录测试案例

    本文为Python自动化测试框架基础入门篇,主要帮助会写基本selenium测试代码又没有规划的同仁.本文应用到POM模型.selenium.unittest框架.configparser配置文件.s ...

  9. 用Python让单片机“行动”起来——MicroPython实战入门篇

    MicroPython以微控制器作为目标,从而使得Python可以用来控制硬件.说到MicroPython,也许有人会感到陌生.而说到和它密切相关的Python,是否会恍然大悟呢?Python属于解释 ...

  10. Python网络爬虫入门篇

    1.  预备知识 学习者需要预先掌握Python的数字类型.字符串类型.分支.循环.函数.列表类型.字典类型.文件和第三方库使用等概念和编程方法. 2. Python爬虫基本流程 a. 发送请求 使用 ...

随机推荐

  1. SSH(四)控制层、业务层、dao层类的创建以及applicationcontext.xml和struts.xml配置

    ssh框架的运作方式就是页面请求控制层,控制层调用dao层的方法,dao层完成对数据的操作的一个过程. 现在我们初步简单编写各层的class. action控制层: ActionSupport:实现了 ...

  2. chrom jsonview的使用

    在开发中,我们可能要为不同的系统提供接口,并以说明文档的形式提供接口说明,但我们提供的返回json往往会在页面上乱成一团. 这里我们推荐chrome浏览器的小插件jsonview,他不但有利于我们对接 ...

  3. requests模块和openpyxl模块

    第三方模块的下载和使用 1,第三方模块就是别人大神们已经写好的模块,功能特别强大.我们如果像使用第三方模块就先要进行下载.下载完成后 才可以在python中直接调用 2.下载方式一:pip工具 pip ...

  4. 微软宣布 S2C2F 已被 OpenSSF 采用

    开源供应链安全对大多数 IT 领导者来说是个日益严峻的挑战,围绕确保开发人员在构建软件时如何使用和管理开源软件 (OSS) 依赖项的稳健策略至关重要.Microsoft 发布安全供应链消费框架 (S2 ...

  5. 常用内置模块os sys json

    今日内容回顾 目录 今日内容回顾 os模块 sys模块 json模块 json模块实战 os模块 sys模块 json模块 os模块 os模块主要与代码运行的操作系统打交道 1.创建目录(文件夹) i ...

  6. STL list容器API

    list容器:链表容器,不支持随机遍历.不能用通用的sort算法(要有随机访问迭代器),容器自己有排序算法 #define _CRT_SECURE_NO_WARNINGS #include<io ...

  7. [MySQL] 索引的使用、SQL语句优化策略

    目录 索引 什么是索引 索引的创建与删除 创建索引 删除索引 索引的使用 使用explain分析SQL语句 最佳左前缀 索引覆盖 避免对索引列进行额外运算 SQL语句优化 小表驱动大表 索引 什么是索 ...

  8. idea 函数名灰色

    idea被引用的方法名突然全部灰掉了 idea被引用的方法名突然全部灰掉了[已解决]_weixin_42554373的博客-CSDN博客_idea方法名灰色

  9. 为什么网络I/O会被阻塞?

    摘要:I/O 其实就是 input 和 output 的缩写,即输入/输出. 本文分享自华为云社区<为啥网络IO会被阻塞呢>,作者: 龙哥手记. 我们应该都知道 socket(套接字),你 ...

  10. LRU 缓存

    力扣题目 146. LRU 缓存 实现 LRU 缓存需要用到哈希链表 LinkedHashMap. LinkedHashMap 是由哈希表和双链表结合而成的,它的结构如下所示. 用自带的 Linked ...