Python:Excel自动化实践入门篇 甲【留言点赞领图书门票】

python,excel,自动化,实践,入门篇,留言,图书,门票 · 浏览次数 : 195

小编点评

**标题:如何用 Python 自动化处理 Excel 表格?** **前言** 本文将带大家了解如何用 Python 自动化处理 Excel 表格,并分享一些实现步骤的具体例子。 **如何使用 openpyxl 模块处理 Excel 表格** 1. **导入库**: ```python import openpyxl ``` 2. **加载 Excel 表格**: ```python # 示例:加载名为 "test.xlsx" 的 Excel 表格 workbook = openpyxl.load_workbook("test.xlsx") ``` 3. **获取工作表**: ```python # 获取 A 列 1 行的第一个单元格的值 sheet = workbook.active[1] ``` 4. **写入内容**: ```python # 设置单元格值 sheet['A1'] = 'hello pytho excel !' # 保存 Excel 表格 workbook.save("test_modified.xlsx") ``` **读取 Excel 表格内容** 1. **获取工作表**: ```python # 获取名为 "test.xlsx" 的 Excel 表格 sheet = workbook.active ``` 2. **获取所有单元格**: ```python # 获取所有行和列 rows, columns = sheet.get_column_dimensions() # 遍历所有单元格并打印值 for row in range(1, rows + 1): for column in range(1, columns + 1): cell = sheet.cell(row, column) print(cell.value, end=" ") print() ``` **福利信息** 这次活动同时在稀土掘金、博客园、微信公众号举办,欢迎各平台搜索博主 ENG八戒 参与最新活动。 **其他资源** * [openpyxl 模块文档](openpyxl.readthedocs.io/) * [Excel自动化实战入门篇 乙](博客园文章)

正文

*以下内容为本人的学习笔记,如需要转载,请声明原文链接 微信公众号「englyf」 https://mp.weixin.qq.com/s/yii52ItDI7IWsj-IF-NxDw


正文开始之前,先给朋友们宣布个好消息,文末有送图书门票的福利活动,不要错过哦!


今天周五,马上就到下午6点钟,该下班的时候了,小菜一把抓起手机刷起微信。

突然,她老板跑来小菜身后拍了拍肩膀喊:“小菜啊,我这有几份 excel 表格”,把小菜吓了一跳,立马放下手里的手机。

老板继续说,“邮件发你了,里边都是这次的出货单,明天来加会儿班弄好它,辛苦一下哈!” 说完也不等回应就转身走了

“哎” 小菜狠狠地挤出一句话,却在心里嘀咕着要怎么应付领导的吩咐,“怎么那么倒霉?又来 Excel 表,偏偏又到周末了,头疼啊……哼 ”

虽然离她坐得很远,看着小菜这么苦恼,想起自己其实是个码农,手里也有点私货,于是我走过去把自己私藏了很多年的公众号推荐给了她。

公众号「ENG八戒」


说起办公自动化就离不开对 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自动化实践入门篇 乙》将在本公众号稍后推送,如果你对此教程有兴趣或者想和我一起交流更多精彩内容,欢迎关注我的微信公众号 「ENG八戒」,等着你哦!


福利来了 !!!

这次搞了个荐图书福利,请不要错过。

图书,这本书是机械工业出版社出版的《Python+Excel报表自动化实战》。

请在评论区留言(主题围绕上述图书相关),并集赞,全文浏览量超过 1000 即统计每个评论集赞数量,集赞数量最多的一位获得赠送图书《Python+Excel报表自动化实战》一本。如果出现多位评论满足中奖条件则延后重新统计,等待浏览量增加超过 500 重新统计,依此类推,直到仅剩一位满足中奖条件。


**【温馨提示:本活动同时在稀土掘金、博客园、微信公众号举办,互不干扰,欢迎各平台搜索博主 ENG八戒 参与最新活动】**

与Python:Excel自动化实践入门篇 甲【留言点赞领图书门票】相似的内容:

Python:Excel自动化实践入门篇 甲【留言点赞领图书门票】

说起办公自动化就离不开对excel表格的处理,现在哪个办公族不得每天面对着几份excel过日本子?

Python:Excel自动化实践入门篇 乙【送图书活动继续】

这是《Python:Excel自动化实践入门篇》第二篇,上一篇的送图书活动还在继续,朋友们快来留言领取!

造个Python轮子,实现根据Excel生成Model和数据导入脚本

前言 最近遇到一个需求,有几十个Excel,每个的字段都不一样,然后都差不多是第一行是表头,后面几千上万的数据,需要把这些Excel中的数据全都加入某个已经上线的Django项目 这就需要每个Excel建个表,然后一个个导入了 这样的效率太低,不能忍 所以我造了个自动生成 Model 和导入脚本的轮

在 Excel 中使用 Python 自动填充公式

安转Python包的国内镜像源 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple 阿里云 https://mirrors.aliyun.com/pypi/simple/ 豆瓣 https://pypi.douban.com/simple/ 百度云 https

Python 将Word/ Exce/ PDF/ PPT文档转为OFD文档

OFD(Open Fixed-layout Document )是我国自主制定的一种开放版式文件格式标准。OFD文档具有不易被篡改、格式独立、版式固定等特点,目前常用于政府公文、金融、电子发票等领域。 如果想要通过Python将Office文档(如Word、Excel或PowerPoint)及PDF

Python 潮流周刊#52:Python 处理 Excel 的资源

本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进 Python 技术,并增长职业和副业的收入。 本期周刊分享了 12 篇文章,12 个开源项目,赠书 5 本《网络是怎样连接的》,

Python导入Excel表格数据并以字典dict格式保存

本文介绍基于Python语言,将一个Excel表格文件中的数据导入到Python中,并将其通过字典格式来存储的方法~

数据分析er看过来,五款工具有你需要的

“我想转行做数据分析,但是我只会用Excel,不会其他的工具,有其他的数据分析工具推荐么?“ “我不会python,那我可以做数据分析吗” 大部分人对数据分析的的第一印象就是Excel,python,其实选择一个工具开始学习是需要花费学习成本的,如果不清楚这款工具能给你带来什么价值,就开始盲目学习,

Python读取大量Excel文件并跨文件批量计算平均值

本文介绍基于Python语言,实现对多个不同Excel文件进行数据读取与平均值计算的方法~

Python按条件筛选、剔除表格数据并绘制剔除前后的直方图

本文介绍基于Python语言,读取Excel表格文件数据,以其中某一列数据的值为标准,对于这一列数据处于指定范围的所有行,再用其他几列数据的数值,加以数据筛选与剔除;同时,对筛选前、后的数据分别绘制若干直方图,并将结果数据导出保存为一个新的Excel表格文件的方法~