Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >5 分钟掌握 openpyxl 操作:Python 轻松处理 Excel

5 分钟掌握 openpyxl 操作:Python 轻松处理 Excel

作者头像
Python编程与实战
发布于 2021-07-29 03:41:25
发布于 2021-07-29 03:41:25
53200
代码可运行
举报
运行总次数:0
代码可运行
来源:python中文社区

各种数据需要导入Excel?多个Excel要合并?目前,Python处理Excel文件有很多库,openpyxl算是其中功能和性能做的比较好的一个。接下来我将为大家介绍各种Excel操作。

打开Excel文件

新建一个Excel文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    >>> from openpyxl import Workbook
    >>> wb = Workbook()

打开现有Excel文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    >>> from openpyxl import load_workbook
    >>> wb2 = load_workbook('test.xlsx')

打开大文件时,根据需求使用只读或只写模式减少内存消耗。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wb = load_workbook(filename='large_file.xlsx', read_only=True)

wb = Workbook(write_only=True)

获取、创建工作表

获取当前活动工作表:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    >>> ws = wb.active

创建新的工作表:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    >>> ws1 = wb.create_sheet("Mysheet") # insert at the end (default)
    # or
    >>> ws2 = wb.create_sheet("Mysheet", 0) # insert at first position
    # or
    >>> ws3 = wb.create_sheet("Mysheet", -1) # insert at the penultimate position

使用工作表名字获取工作表:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    >>> ws3 = wb["New Title"]

获取所有的工作表名称:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    >>> print(wb.sheetnames)
    ['Sheet2', 'New Title', 'Sheet1']
使用for循环遍历所有的工作表:

    >>> for sheet in wb:
    ...     print(sheet.title)

保存

保存到流中在网络中使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    >>> from tempfile import NamedTemporaryFile
    >>> from openpyxl import Workbook
    >>> wb = Workbook()
    >>> with NamedTemporaryFile() as tmp:
            wb.save(tmp.name)
            tmp.seek(0)
            stream = tmp.read()
保存到文件:

    >>> wb = Workbook()
    >>> wb.save('balances.xlsx')
保存为模板:

    >>> wb = load_workbook('document.xlsx')
    >>> wb.template = True
    >>> wb.save('document_template.xltx')

单元格

单元格位置作为工作表的键直接读取:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    >>> c = ws['A4']

为单元格赋值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    >>> ws['A4'] = 4
    >>> c.value = 'hello, world'

多个单元格可以使用切片访问单元格区域:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    >>> cell_range = ws['A1':'C2']

使用数值格式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    >>> # set date using a Python datetime
    >>> ws['A1'] = datetime.datetime(2010, 7, 21)
    >>>
    >>> ws['A1'].number_format
    'yyyy-mm-dd h:mm:ss'

使用公式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    >>> # add a simple formula
    >>> ws["A1"] = "=SUM(1, 1)"

合并单元格时,除左上角单元格外,所有单元格都将从工作表中删除:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    >>> ws.merge_cells('A2:D2')
    >>> ws.unmerge_cells('A2:D2')
    >>>
    >>> # or equivalently
    >>> ws.merge_cells(start_row=2, start_column=1, end_row=4, end_column=4)
    >>> ws.unmerge_cells(start_row=2, start_column=1, end_row=4, end_column=4) 

行、列

可以单独指定行、列、或者行列的范围:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    >>> colC = ws['C']
    >>> col_range = ws['C:D']
    >>> row10 = ws[10]
    >>> row_range = ws[5:10]

可以使用Worksheet.iter_rows()方法遍历行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    >>> for row in ws.iter_rows(min_row=1, max_col=3, max_row=2):
    ...    for cell in row:
    ...        print(cell)
    <Cell Sheet1.A1>
    <Cell Sheet1.B1>
    <Cell Sheet1.C1>
    <Cell Sheet1.A2>
    <Cell Sheet1.B2>
    <Cell Sheet1.C2>

同样的Worksheet.iter_cols()方法将遍历列:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    >>> for col in ws.iter_cols(min_row=1, max_col=3, max_row=2):
    ...     for cell in col:
    ...         print(cell)
    <Cell Sheet1.A1>
    <Cell Sheet1.A2>
    <Cell Sheet1.B1>
    <Cell Sheet1.B2>
    <Cell Sheet1.C1>
    <Cell Sheet1.C2>

遍历文件的所有行或列,可以使用Worksheet.rows属性:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    >>> ws = wb.active
    >>> ws['C9'] = 'hello world'
    >>> tuple(ws.rows)
    ((<Cell Sheet.A1>, <Cell Sheet.B1>, <Cell Sheet.C1>),
    (<Cell Sheet.A2>, <Cell Sheet.B2>, <Cell Sheet.C2>),
    (<Cell Sheet.A3>, <Cell Sheet.B3>, <Cell Sheet.C3>),
    (<Cell Sheet.A4>, <Cell Sheet.B4>, <Cell Sheet.C4>),
    (<Cell Sheet.A5>, <Cell Sheet.B5>, <Cell Sheet.C5>),
    (<Cell Sheet.A6>, <Cell Sheet.B6>, <Cell Sheet.C6>),
    (<Cell Sheet.A7>, <Cell Sheet.B7>, <Cell Sheet.C7>),
    (<Cell Sheet.A8>, <Cell Sheet.B8>, <Cell Sheet.C8>),
    (<Cell Sheet.A9>, <Cell Sheet.B9>, <Cell Sheet.C9>))

Worksheet.columns属性:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    >>> tuple(ws.columns)
    ((<Cell Sheet.A1>,
    <Cell Sheet.A2>,
    <Cell Sheet.A3>,
    <Cell Sheet.A4>,
    <Cell Sheet.A5>,
    <Cell Sheet.A6>,
    ...
    <Cell Sheet.B7>,
    <Cell Sheet.B8>,
    <Cell Sheet.B9>),
    (<Cell Sheet.C1>,
    <Cell Sheet.C2>,
    <Cell Sheet.C3>,
    <Cell Sheet.C4>,
    <Cell Sheet.C5>,
    <Cell Sheet.C6>,
    <Cell Sheet.C7>,
    <Cell Sheet.C8>,
    <Cell Sheet.C9>))

使用Worksheet.append()或者迭代使用Worksheet.cell()新增一行数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    >>> for row in range(1, 40):
    ...     ws1.append(range(600))

    >>> for row in range(10, 20):
    ...     for col in range(27, 54):
    ...         _ = ws3.cell(column=col, row=row, value="{0}".format(get_column_letter(col)))

插入操作比较麻烦。可以使用Worksheet.insert_rows()插入一行或几行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
     >>> from openpyxl.utils import get_column_letter
     >>> ws.insert_rows(7) 
     >>> row7 = ws[7]
     >>> for col in range(27, 54):
    ...         _ = ws3.cell(column=col, row=7, value="{0}".format(get_column_letter(col)))

Worksheet.insert_cols()操作类似。Worksheet.delete_rows()Worksheet.delete_cols()用来批量删除行和列。

只读取值

使用Worksheet.values属性遍历工作表中的所有行,但只返回单元格值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    for row in ws.values:
       for value in row:
         print(value)

Worksheet.iter_rows()Worksheet.iter_cols()可以设置values_only参数来仅返回单元格的值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    >>> for row in ws.iter_rows(min_row=1, max_col=3, max_row=2, values_only=True):
    ...   print(row)
    (None, None, None)
    (None, None, None)

作者:Sinchard,主攻Python库文档翻译,开发代码片段,源码分析

Blog:zhihu.com/people/aiApple

- EOF -

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python编程与实战 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Python openpyxl 处理Excel使用指南
这是一份openpyxl的使用指南。 翻译自官网 https://openpyxl.readthedocs.io/en/stable/tutorial.html
AnRFDev
2021/02/01
1.2K0
openpyxl:Python的Excel操作库
luckpunk
2023/09/27
7390
openpyxl:Python的Excel操作库
python3编程基础:操作excel(
python中操作excel的模块有很多,比如xlrd,xlwt,openpyxl,xlutils等。前两个是一套,一个读一个写。注意:xlwt模块,只能支持到excel2003,也就是扩展名为.xls的excel;xlrd模块可以支持读取07版本,也就是.xlsx扩展名的excel。每个模块都有一些优缺点,本文以openpyxl模块为例来进行介绍。
py3study
2020/01/13
8060
python openpyxl
from openpyxl import Workbook wb = Workbook() #创建文件对象
用户5760343
2022/05/13
8220
python openpyxl 常用功能
1. 安装 pip install openpyxl 1 2. 打开文件 ① 创建 from openpyxl import Workbook # 实例化 wb = Workbook() # 激活 worksheet ws = wb.active 12345 ② 打开已有 >>> from openpyxl import load_workbook >>> wb2 = load_workbook('文件名称.xlsx') 12 3. 储存数据 # 方式一:数据可以直接分配到单元格中(可以输入公式)
用户5760343
2022/05/13
7500
python3 openpyxl操作excel
在日常工作中,避免不了需要操作excel文件的情况,如果还带有需要对excel的内容进行格式设定、合并单元格等需求,那么可以使用openxl来解决处理。
Devops海洋的渔夫
2019/10/10
2.8K0
python3 openpyxl操作excel
python3操作Excel (一)
excel表中有图像,需要安装pillow库。 pip install Pillow
py3study
2020/01/06
9590
使用openpyxl读写excel文件
读写excel是日常工作中的高频操作,openpyxl模块支持对后缀为xlsx的excel文件进行读写,注意,它不支持后缀为xls的文件。
生信修炼手册
2020/11/25
1.1K0
Excel办公自动化
请注意,本文编写于 986 天前,最后修改于 986 天前,其中某些信息可能已经过时。
曼亚灿
2023/05/17
4000
Excel办公自动化
Python处理excel的强大工具-openpyxl
首先,Python处理excel的第三方库有:xlrd,xlwt,openpyxl等。
吾非同
2020/10/13
2.1K0
Python excel 功能扩展库 —
说明:本文档内容参考自 https://www.cnblogs.com/zeke-python-road/p/8986318.html (作者:关关雎鸠`)的文档
py3study
2020/01/17
4500
python操作Excel,你觉得哪个库更好呢?
每一个Excel数据文件从上至下分为三个层级的对象: workbook: 每一个Excel文件就是一个workbook。 sheet: 每一个workbook中可以包含多个sheet,具体就对应Excel中我们在左下脚所看到的“sheet1”,“sheet2”等。 cell: 每一个sheet就是我们通常所看到的一个表格,可以含有m行,n列,每个确定的行号,列号所对应的一个格子就是一个cell。
星星在线
2018/08/21
12.5K0
python操作Excel,你觉得哪个库更好呢?
openpyxl
openpyxl用来操作xlsx文件(不支持xls文件) 以下用wb代表WorkBook类,ws代表WorkSheet类,cell代表单元格。
TomatoCool
2023/07/30
3420
openpyxl-读写Excel文件的Python库
写脚本的时候,想要用Python读取Excel文件内容,谷歌搜索发现了openpyxl这个包,学习后发现简单地读写Excel文件还是比较方便的,库的设计也很简洁,没有太多深奥的东西。这里记录一下,说不定哪天还是会用到呢。
王云峰
2019/12/25
9160
Python3 读取和写入excel xlsx文件 使用openpyxl
•win32com:不仅仅是excel,可以处理office;不过它相当于是 windows COM 的封装,新手使用起来略有些痛苦。
用户7886150
2020/12/23
3.2K0
Python-操作Excel表-openpyxl模块使用
openpyxl是一个强大的Python库,用于读写Excel(xlsx/xlsm/xltx/xltm)文件。
用户9006224
2023/10/11
7550
10分钟学会用Python轻松玩转Excel,建议收藏
当你需要每天对 Excel 做大量重复的操作,如果只靠人工来做既浪费时间,又十分枯燥,好在 Python 为我们提供了许多操作 Excel 的模块,能够让我们从繁琐的工作中腾出双手。
程序员小二
2021/12/23
8220
10分钟学会用Python轻松玩转Excel,建议收藏
Python自动化:Python操作Excel的多种方式Pandas+openpyxl+xlrd
使用pandas操作Excel文件主要涉及读取(read_excel)和写入(to_excel)两个主要操作。
小白的大数据之旅
2024/11/20
5400
用Python自动化操作Excel制作报表,真的是太方便啦!!!
今天小编来介绍一下如何用Python来操作Excel文件,当中需要用到的模块叫做openpyxl,其中我们会涉及到一些基本常规的操作,例如有
用户6888863
2023/03/01
8180
用Python自动化操作Excel制作报表,真的是太方便啦!!!
'python之excel读写报表统计入门'
随着python版本升级, 版本在2.7以上的,在安装Python的时候,已经自动安装好了pip.pip是下载相关依赖的引擎,每个人的理解不一样.相当于java中的mvn,也相当于node中的npm,可以使用pip install 模块名 的方式下载所需的依赖.
java攻城狮
2021/02/26
9940
'python之excel读写报表统计入门'
相关推荐
Python openpyxl 处理Excel使用指南
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验