10分钟学会用Python轻松玩转Excel

2023-11-09

前言

当你需要每天对 Excel 做大量重复的操作,如果只靠人工来做既浪费时间,又十分枯燥,好在 Python 为我们提供了许多操作 Excel 的模块,能够让我们从繁琐的工作中腾出双手。

今天就和大家分享一个快速处理 Excel 的模块 openpyxl,它的功能相对与其他模块更为齐全,足够应对日常出现的问题。

openpyxl 安装

直接在命令提示符中输入。

pip install openpyxl

或使用豆瓣镜像安装。

pip install -i https://pypi.douban.com/simple openpyxl

安装成功后,下面就看看如何使用

打开/创建工作簿

示例工作簿

工作表【一等奖】

工作表【二等奖】

(1)打开本地工作簿

>>> from openpyxl import load_workbook
>>> wb = load_workbook('获奖名单.xlsx')

(2)创建空的工作薄

>>> from openpyxl import Workbook
>>> wb1 = Workbook()

访问工作表

创建新工作表,可指定插入的位置(0:首位,-1:末尾)。

>>> wb.create_sheet('new_sheet', 0)
<Worksheet "new_sheet">

获取工作簿中所有工作表。

>>> wb.sheetnames
['new_sheet', '一等奖', '二等奖']

使用列表推导式遍历获取所有工作表名称。

>>> [sheet.title for sheet in wb]
['new_sheet', '一等奖', '二等奖']

使用 wb[sheetname] 来获取一个工作表对象

>>> wb['二等奖']
<Worksheet "二等奖">

获取活动表(即打开工作簿首先出现的工作表)。

>>> wb.active
<Worksheet "一等奖">

获取工作表行列信息。

>>> sheet1 = wb['一等奖']
>>> sheet1.max_column
7
>>> sheet1.max_row
6

获取单元格信息

访问某个单元格
>>> sheet1['D3']
<Cell '一等奖'.D3>
>>> sheet1.cell(row=3, column=4)
<Cell '一等奖'.D3>

如果访问单元格式添加 value 参数则会修改当前单元格的值。

>>> sheet1.cell(3, 4).value
'基于Spark、Python的医护人员信息抽取与管理'
>>> sheet1.cell(3, 4, value='Python')
<Cell '一等奖'.D3>
>>> sheet1.cell(3, 4).value
'Python'

获取单元格的值、坐标、行索引、列索引。

>>> sheet1['D3'].value
'Python'
>>> sheet1['D3'].coordinate
'D3'
>>> sheet1['D3'].row
3
>>> sheet1['D3'].column
4
访问多个单元格

使用切片来访问多个单元格,这里的切片与列表切片有区别,列表切片是前闭后开,Excel 中的切片是前闭后闭

(1)选取 A1:B2 区域的单元格。

>>> sheet1['A1':'B2']
((<Cell '一等奖'.A1>,
  <Cell '一等奖'.B1>),
 (<Cell '一等奖'.A2>,
  <Cell '一等奖'.B2>))


选取单列数据。

>>> sheet1['D']
(<Cell '一等奖'.D1>,
    ...
 <Cell '一等奖'.D6>)

选取B,C列数据。

 >>> sheet1['B:C']
((<Cell '一等奖'.B1>,
    ...
  <Cell '一等奖'.B6>),
 (<Cell '一等奖'.C1>,
    ...
  <Cell '一等奖'.C6>))

选取单行数据。

>>> sheet1[3]
(<Cell '一等奖'.A3>,
 <Cell '一等奖'.B3>,
    ...
 <Cell '一等奖'.F3>,
 <Cell '一等奖'.G3>)

选取第2,3行数据。

>>> sheet1[2:3]
((<Cell '一等奖'.A2>,
    ...
  <Cell '一等奖'.G2>),
 (<Cell '一等奖'.A3>,
    ...
  <Cell '一等奖'.G3>))
遍历获取数据

按行遍历指定范围(B2:C3)数据。

>>> for row in  sheet1.iter_rows(min_row=2, max_row=3, min_col=2, max_col=3):
        for cell in  row:
            print(cell.coordinate)

B2
C2
B3
C3

按列遍历指定范围(B2:C3)数据。

>>> for col in  sheet1.iter_cols(min_row=2, max_row=3, min_col=2, max_col=3):
        for cell in col:
            print(cell.coordinate)

B2
B3
C2
C3

如果 iter_rows()/iter_cols() 中指定参数 values_only=True,那么将只返回单元格的值

按行遍历所有数据。

>>> tuple(sheet1.rows)
((<Cell '一等奖'.A1>,
  ...
  <Cell '一等奖'.G1>),
  ...
  ...
 (<Cell '一等奖'.A6>,
  ...
  <Cell '一等奖'.G6>))

按列遍历所有数据。

>>> tuple(sheet1.columns)
((<Cell '一等奖'.A1>,
  ...
  <Cell '一等奖'.A6>),
  ...
  ...
 (<Cell '一等奖'.G1>, 
  ...
  <Cell '一等奖'.G6>))

修改工作表

单元格赋值

新增一列计算 作者 人数。

>>> for row_index in range(2, sheet1.max_row + 1):
	      sheet1.cell(row_index, 8).value = len(sheet1.cell(row_index, 6).value.split(','))

使用公式给单元格赋值,H7 统计作者总人数。

>>> sheet1['H7'] = '=SUM(H1:H6)'

追加一行数据

使用列表按序传入值。

>>> sheet1.append([str(n) for n in range(6)])


使用字典指定 列索引:列值

>>> sheet1.append({'A':'1','C':'3'})

插入空白行

在指定位置插入空白行, idx 行索引,插入的位置;amount 插入空白行的数量

>>> sheet1.insert_rows(idx=2, amount=2)

删除工作表
>>> wb.remove(wb['new_sheet'])
保存工作簿
>>> wb.save('获奖名单V1.xlsx')

修改样式

字体

设置 B2 单元格字体格式为,颜色可以用十六进制颜色代码。

>>> from openpyxl.styles import Font

>>> new_font = Font(name='微软雅黑', size=20, color='3333CC', bold=True)
>>> sheet1['B2'].font = new_font

单元格背景颜色
>>> from openpyxl.styles import PatternFill, colors
>>> sheet1["A2"].fill = PatternFill("solid", fgColor=colors.BLUE)
>>> sheet1["A3"].fill = PatternFill("solid", fgColor='FF66CC')

对齐方式

设置 D2 中的数据 垂直居中水平居中

>>> from openpyxl.styles import Alignment
>>> sheet1['D2'].alignment = Alignment(horizontal='center', vertical='center')

行高/列宽

设置第2行行高为40,C列列宽为20。

>>> sheet1.row_dimensions[2].height = 40
>>> sheet1.column_dimensions['C'].width = 20

合并/拆分单元格

合并单元格只需要指定左上角和右下角的单元格坐标。

>>> sheet.merge_cells('A1:C3')

拆分单元格后,合并区域的值会赋给左上角单元格A1。

>>> sheet.unmerge_cells('A1:C3')



对于刚入门 Python 或是想要入门 Python 的小伙伴,可以通过下方小卡片联系作者,一起交流学习,都是从新手走过来的,有时候一个简单的问题卡很久,但可能别人的一点拨就会恍然大悟,由衷的希望大家能够共同进步。另有整理的近千套简历模板,几百册电子书等你来领取哦!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

10分钟学会用Python轻松玩转Excel 的相关文章

  • Python 的键盘中断不会中止 Rust 函数 (PyO3)

    我有一个使用 PyO3 用 Rust 编写的 Python 库 它涉及一些昂贵的计算 单个函数调用最多需要 10 分钟 从 Python 调用时如何中止执行 Ctrl C 好像只有执行结束后才会处理 所以本质上没什么用 最小可重现示例 Ca
  • Django 管理员在模型编辑时间歇性返回 404

    我们使用 Django Admin 来维护导出到我们的一些站点的一些数据 有时 当单击标准更改列表视图来获取模型编辑表单而不是路由到正确的页面时 我们会得到 Django 404 页面 模板 它是偶尔发生的 我们可以通过重新加载三次来重现它
  • OpenCV Python cv2.mixChannels()

    我试图将其从 C 转换为 Python 但它给出了不同的色调结果 In C Transform it to HSV cvtColor src hsv CV BGR2HSV Use only the Hue value hue create
  • 无法使用 VBA 代码从 Excel 连接到 Teradata - 无法通过网络访问 Teradata 服务器

    我一直在尝试使用 vba 代码从 Excel 连接到 Teradata 但收到以下错误 无法通过网络访问 Teradata Server 我已经能够从 Teradata SQL 助手成功连接 并且还成功 ping 通 Teradata 服务
  • 如何使用 Ansible playbook 中的 service_facts 模块检查服务是否存在且未安装在服务器中?

    我用过service facts检查服务是否正在运行并启用 在某些服务器中 未安装特定的软件包 现在 我如何知道这个特定的软件包没有安装在该特定的服务器上service facts module 在 Ansible 剧本中 它显示以下错误
  • 根据列值突出显示数据框中的行?

    假设我有这样的数据框 col1 col2 col3 col4 0 A A 1 pass 2 1 A A 2 pass 4 2 A A 1 fail 4 3 A A 1 fail 5 4 A A 1 pass 3 5 A A 2 fail 2
  • 如何从网页中嵌入的 Tableau 图表中抓取工具提示值

    我试图弄清楚是否有一种方法以及如何使用 python 从网页中的 Tableau 嵌入图形中抓取工具提示值 以下是当用户将鼠标悬停在条形上时带有工具提示的图表示例 我从要从中抓取的原始网页中获取了此网址 https covid19 colo
  • 以编程方式停止Python脚本的执行? [复制]

    这个问题在这里已经有答案了 是否可以使用命令在任意行停止执行 python 脚本 Like some code quit quit at this point some more code that s not executed sys e
  • 如何在Python中获取葡萄牙语字符?

    我正在研究葡萄牙语 角色看起来很奇怪 我怎样才能解决这个问题 代码 import feedparser import random Vou definir os feeds feeds conf feedurl http pplware s
  • Flask如何获取请求的HTTP_ORIGIN

    我想用我自己设置的 Access Control Allow Origin 标头做出响应 而弄清楚请求中的 HTTP ORIGIN 参数在哪里似乎很混乱 我在用着烧瓶 0 10 1 以及HTTP ORIGIN似乎是这个的特点之一object
  • Python 的“zip”内置函数的 Ruby 等价物是什么?

    Ruby 是否有与 Python 内置函数等效的东西zip功能 如果不是 做同样事情的简洁方法是什么 一些背景信息 当我试图找到一种干净的方法来进行涉及两个数组的检查时 出现了这个问题 如果我有zip 我可以写这样的东西 zip a b a
  • Pygame:有没有简单的方法可以找到按下的任何字母数字的字母/数字?

    我目前正在开发的游戏需要让人们以自己的名义在高分板上计时 我对如何处理按键有点熟悉 但我只处理过寻找特定的按键 有没有一种简单的方法可以按下任意键的字母 而不必执行以下操作 for event in pygame event get if
  • 如何使用vba复制Excel工作表中的动态范围

    我试图使宏中的范围是动态的 而不指定最后一行x Sheets SheetName Range A2 K1000 Copy在 1000 行中 我想将其更改为动态 因为有时我的数量会更少或更多 尝试这个 Sub Test Dim lRow as
  • Pandas:merge_asof() 对多行求和/不重复

    我正在处理两个数据集 每个数据集具有不同的关联日期 我想合并它们 但因为日期不完全匹配 我相信merge asof 是最好的方法 然而 有两件事发生merge asof 不理想的 数字重复 数字丢失 以下代码是一个示例 df a pd Da
  • Fabric env.roledefs 未按预期运行

    On the 面料网站 http docs fabfile org en 1 10 usage execution html 给出这个例子 from fabric api import env env roledefs web hosts
  • 每个 X 具有多个 Y 值的 Python 散点图

    我正在尝试使用 Python 创建一个散点图 其中包含两个 X 类别 cat1 cat2 每个类别都有多个 Y 值 如果每个 X 值的 Y 值的数量相同 我可以使用以下代码使其工作 import numpy as np import mat
  • 对年龄列进行分组/分类

    我有一个数据框说df有一个柱子 Ages gt gt gt df Age 0 22 1 38 2 26 3 35 4 35 5 1 6 54 我想对这个年龄段进行分组并创建一个像这样的新专栏 If age gt 0 age lt 2 the
  • 为字典中的一个键附加多个值[重复]

    这个问题在这里已经有答案了 我是 python 新手 我有每年的年份和值列表 我想要做的是检查字典中是否已存在该年份 如果存在 则将该值附加到特定键的值列表中 例如 我有一个年份列表 并且每年都有一个值 2010 2 2009 4 1989
  • 解释 Python 中的数字范围

    在 Pylons Web 应用程序中 我需要获取一个字符串 例如 关于如何做到这一点有什么建议吗 我是 Python 新手 我还没有找到任何可以帮助解决此类问题的东西 该列表将是 1 2 3 45 46 48 49 50 51 77 使用
  • 如何计算 pandas 数据帧上的连续有序值

    我试图从给定的数据帧中获取连续 0 值的最大计数 其中包含来自 pandas 数据帧的 id date value 列 如下所示 id date value 354 2019 03 01 0 354 2019 03 02 0 354 201

随机推荐

  • Optional静态类( Java8 )

    Optional简介 在Java8中的StreamAPI有很多操作都返回了Optional对象 那么这个对象是用来干嘛的 用来解决空指针问题 产生的一个类 也可以认为这是一个容器对象 因为它可以保存类型为T的对象 也可以保存null Opt
  • MySQL自增列插入0值的解决方案

    在将数据库从MSSQL迁移到MySQL的过程中 基于业务逻辑的要求 需要在MySQL的自增列插入0值 在MSSQL中是这样完成的 复制代码 代码如下 string sql sql set identity insert dbo AppUse
  • Unity动画篇:Mecanim动画系统重点整合(获取当前正在播放的动画片段)

    1 animator GetCurrentAnimatorStateInfo 0 参数是表示层级 返回的当前层级正在播放的动画的状态机 Base为0 New为1 以此类推 如果要获取不受缩放影响的原始剪辑 可以用runtimeAnimato
  • pycharm 远程调试报错 Couldn‘t refresh skeletons for remote interpreter 解决方法

    在同步远程和本地的依赖文件时 无法同步 报出错误事件如下 Couldn t refresh skeletons for remote interpreter failed to run generator3 main py for sftp
  • 【廖雪峰python入门笔记】if语句

    1 if语句及缩进规则 计算机之所以能做很多自动化的任务 因为它可以自己做条件判断 比如 输入用户年龄 根据年龄打印不同的内容 在Python程序中 可以用if语句实现 age 20 if age gt 18 print your age
  • uniapp使用videojs播放视频

    文章目录 基本配置和使用 配置后使用遇到问题 m3u8格式视频 播放页面请求url后播放不了 播放页面退出后 再进入出错 设置播放按钮位置 基本配置和使用 官方的文档 简单来说 直接复制模板文件index html 放在跟目录下 在mani
  • python+MacOS 读取macOS目录中文件时排除.DS_Store文件方法

    加载图片列表 import os def round read file file path file name list for file name in os listdir file path if file name DS Stor
  • cpp: Composite Pattern

    file GoldDir h brief 组合模式CompositePattern 亦称 对象树 Object Tree Composite c 14 2023年5月28日 涂聚文 Geovin Du Visual Studio 2022
  • 最全整理:中国人工智能百强企业(100)榜单

    http blog itpub net 29829936 viewspace 2375626 2019 01 11 10 25 24 1 创略科技 总部 上海 简介 创略科技隶属于创络 上海 数据科技有限公司 创略科技是一家客户数据技术和A
  • 合二为一——“CPU-GPU”技术解析

    在过去的2007年 NVIDIA率先引入了Tesla通用GPU计算架构 最终目的是将CPU和GPU合二为一 然而NVIDIA并没有CPU的研发历史 在整合的道路上遇到了重重困难 另一方面 AMD 计划于2009年推出内建GPU核心的Fusi
  • 王道操作系统中页表相关计算

    已知 32位虚拟地址空间 以字节为编址单位 页面大小 4KB 页表项大小 4B 则 一个进程有 2 32B 2 12B 2 20页 2 20页则至少需要20位才能表示完所有的页面 1页能装下4kB 4B 2 10个页表项 2 20页共需要2
  • C++: explicit的适用场合以及为什么要使用explicit

    explicit是个C 关键子 但是关注过它的人远远没有其他关键字的多 但是往往忽略了它 就会在一些不经意的地方造成错误 而花费更多的时间去寻找 看下下面这个例子 include
  • 3张图打造个人写真照,你也可以AIGC

    前阵子 妙鸭相机的出现 9 9的价格 让大家过了一把写真照的瘾 最近自己也开始关注一些大数据模型相关的内容 有时会想想 有没哪些比较好的模型 能够运用在手机移动端 然后我们实际生活中又会有哪些应用需求 最近阿里达摩院 发布了一个开源项目 酷
  • 【VSCODE】3、如何支持点击函数跳转

    在安装 vscode 之后 需要配置一下才能支持 command 鼠标 实现函数跳转 一 配置方式 我要配置的是 python 语言 以 python 语言为例来设置 1 在扩展商店搜索 python 并安装 2 安装完成后点击设置按钮 进
  • 可转债数据一览表集思录_可转债投资每周记录20200830

    0 说明 还有一个交易日 8 月份就要过去了 本月上证指数上涨 2 8 左右 可转债等权指数上涨 3 3 左右 截止到本周 我自己 2020 年可转债的中签率如下 8 月份就要过去了 一只可转债都没有中过 没有比我更惨的了吧 当前我自己的投
  • vim配色方案设置(更换vim配色方案)

    1 安装vim后 执行命令 whereis vim 你会看到返回结果 vim usr bin vim usr share vim usr share man man1 vim 1 gz 注意 usr share vim 为vim为用户提供的
  • 基于 VGG16 迁移学习的轴承故障诊断方法代码(python代码,带有数据集,可以直接运行)

    运行效果 基于 VGG16 迁移学习的轴承故障诊断方法代码 python代码 带有数据集 可以直接运行 哔哩哔哩 bilibili 这个项目是复现的这篇文章 基于VGG16迁移学习的轴承故障诊断方法 中国知网 可以结合这篇文章理解本次项目
  • [Binospace] HBase Metrics参数详解

    本研究针对HBase 0 94 及以上版本的系统 RegionServer 本目标主要集中分析在RegionServer提供的相关Metrics接口 在0 94新版本中 Metrics包括 RegionServerMetrics JvmMe
  • JVM-GC垃圾回收器

    垃圾回收器简介 垃圾回收器 工作模式 暂停方式 回收算法 特点 Serial GC 串行 工作线程暂停 一个线程进行垃圾回收 新生代复制算法 Serial Old GC 串行 工作线程暂停 一个线程进行垃圾回收 老年代标记 整理算法 Par
  • 10分钟学会用Python轻松玩转Excel

    前言 当你需要每天对 Excel 做大量重复的操作 如果只靠人工来做既浪费时间 又十分枯燥 好在 Python 为我们提供了许多操作 Excel 的模块 能够让我们从繁琐的工作中腾出双手 今天就和大家分享一个快速处理 Excel 的模块 o