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

别再手动画图了!用Python的openpyxl给Excel自动生成带样式的折线图 本文详细介绍了如何使用Python的openpyxl库自动化生成Excel带样式的折线图,大幅提升报表制作效率。通过基础图表生成、高级样式定制、可复用函数封装等实战技巧,帮助数据分析师告别重复劳动,实现100%准确的图表自动化。 阅读详情

来源:python中文社区

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

打开Excel文件

新建一个Excel文件

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

打开现有Excel文件

    >>> from openpyxl import load_workbook
    >>> wb2 = load_workbook('test.xlsx')

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

wb = load_workbook(filename='large_file.xlsx', read_only=True)

wb = Workbook(write_only=True)

获取、创建工作表

获取当前活动工作表:

    >>> ws = wb.active

创建新的工作表:

    >>> 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

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

    >>> ws3 = wb["New Title"]

获取所有的工作表名称:

    >>> print(wb.sheetnames)
    ['Sheet2', 'New Title', 'Sheet1']
使用for循环遍历所有的工作表:

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

保存

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

    >>> 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')

单元格

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

    >>> c = ws['A4']

为单元格赋值:

    >>> ws['A4'] = 4
    >>> c.value = 'hello, world'

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

    >>> cell_range = ws['A1':'C2']

使用数值格式:

    >>> # set date using a Python datetime
    >>> ws['A1'] = datetime.datetime(2010, 7, 21)
    >>>
    >>> ws['A1'].number_format
    'yyyy-mm-dd h:mm:ss'

使用公式:

    >>> # add a simple formula
    >>> ws["A1"] = "=SUM(1, 1)"

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

    >>> 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) 

行、列

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

    >>> colC = ws['C']
    >>> col_range = ws['C:D']
    >>> row10 = ws[10]
    >>> row_range = ws[5:10]

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

    >>> 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()方法将遍历列:

    >>> 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属性:

    >>> 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属性:

    >>> 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()新增一行数据:

    >>> 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()插入一行或几行:

     >>> 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属性遍历工作表中的所有行,但只返回单元格值:

    for row in ws.values:
       for value in row:
         print(value)

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

    >>> 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

推荐阅读:入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|年度爆款文案1).卧槽!Pdf转Word用Python轻松搞定!2).学Python真香!我用100行代码做了个网站,帮人PS旅行图片,赚个鸡腿吃3).首播过亿,火爆全网,我分析了《乘风破浪的姐姐》,发现了这些秘密 4).80行代码!用Python做一个哆来A梦分身 5).你必须掌握的20个python代码,短小精悍,用处无穷 6).30个Python奇淫技巧集 7).我总结的80页《菜鸟学Python精选干货.pdf》,都是干货 8).再见Python!我要学Go了!2500字深度分析!9).发现一个舔狗福利!这个Python爬虫神器太爽了,自动下载妹子图片点阅读原文,领AI全套资料!
深入解析poi-tl自定义表格渲染插件中的多级子循环实现 本文深入解析了poi-tl自定义表格渲染插件中的多级子循环实现,详细介绍了其在处理复杂业务数据时的核心价值、实现原理及实战技巧。通过多级子循环机制,开发者可以高效地将层级数据结构渲染到Word表格中,显著提升代码简洁性和维护效率。文章还分享了性能优化和异常处理经验,帮助开发者更好地应用该插件。 阅读详情

相关推荐

利用gprMax与Matlab实现SFCW雷达信号的高效仿真与优化

本文详细介绍了如何结合gprMax与Matlab实现SFCW雷达信号的高效仿真与优化。通过利用gprMax获取地下场景的冲激响应,并在Matlab中运用卷积与信号处理技术,可大幅提升SFCW雷达系统仿真的效率与灵活性,为探地雷达研究与设计提供强大工具。

book8的博客 706

利用openpyxl和docx批量生成请假条

一、需求分析 1、excel表中有员工请假汇总表 2、需要每位员工生成请假条 二、程序思路 1、openpyxl读取excel表中的数据 2、docx将读取的数据生成请假条 三、代码实现 from openpyxl import load_workbook # 读取 Word 文件 from docx import Document # 文件涉及段落样式修改 from docx.enum.text import WD_PARAGRAPH_ALIGNMENT # 文件涉及文字样式修改

castingA3T的博客 609

基于TDOA的chan算法(定位算法)

Chan算法原理 TDOA(TDOA,the time differences of arrival,到达时间差),Chan算法是TDOA定位方法的一个很好用的方法。 Chan算法是非递归双曲线方程组解法,具有解析表达式解,主要特点是:在测量误差服从理想高斯分布时,它的定位精度高、计算量小,并且可以通过增加已确定点的数量来提高算法精度。 该算法的推导前提是基于测量误差为零均值高斯随机变量,对于实际环境中误差较大的测量值,比如在有非视距误差的环境下,该算法的性能会有显著下降。二维情况下,可分为只有三个点参与定

优快云不再更新 2万+

openpyxl3.0官方文档(1)——入门教程

创建工作簿¶ 在使用openpyxl库时,无需创建一个空白的Excel文件。只需要导入Workbook类: >>> from openpyxl import Workbook >>> wb = Workbook() 在Excel工作簿中至少包含一个工作表。可以通过Workbook.active属性来获取当前活动工作表: >>> ws = wb.active 在默认情况下,活动工作表总被设置为0。除非修改其值,可以使用此方法获得

Sinchard的专栏 2955

QT的温湿度显示系统

大家好,这里是石侃侃的博客,欢迎前来讨论这篇文章介绍的是DHT11在2440上的基于Qt5.6的应用基于单片机系统的温湿度监测系统构成框图如图2-1所示。图2-1 系统构成框图该系统采用单片机s3c2440作为了本设计的核心元件。利用LCD作为了显示器件,利用触摸屏作为用户界面输入设备,第一行显示当前实时的温度,湿度,第二行依次显示历史时刻最高的温度值,最高的湿度值。第三行是一个文本框,记录了程...

zxpcus的博客 1万+

[系统安全] 三十二.恶意代码检测(2)常用技术详解及总结

前文从产业界和学术界分别详细讲解恶意代码攻击溯源的相关知识,在学术界方面,用类似于综述来介绍攻击追踪溯源的不同方法;在产业界方面,主要参考李东宏老师从企业恶意样本分析的角度介绍溯源工作。这篇文章将详细总结恶意代码检测技术,包括恶意代码检测的对象和策略、特征值检测技术、校验和检测技术、启发式扫描技术、虚拟机检测技术和主动防御技术。希望这篇文章对您有所帮助,如果文章中存在错误、理解不到位或侵权的地方,还请告知作者与海涵。且看且珍惜,加油~

杨秀璋的专栏 1万+

python_openpyxl常用语法记录

openpyxl常用语法记录方便以后查看

m0_37967652的博客 1232

【大数据Java基础-Java基础01】环境搭建(一)Sublime Text3搭建Java编译环境(Windows系统)

1. 首先配置好Java环境变量 我的jdk版本是1.8.0_191,存放目录是C:\Program Files\Java,因此添加以下环境变量 (1)系统变量→新建 JAVA_HOME 变量,变量值为: C:\Program Files\Java\jdk1.8.0_191 (2)系统变量→找到 Path 变量→编辑,末尾加入: ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin 如果Path变量末尾本身有“;”,则上述路径前面则不需要加“;” (3)系统变量→新建 CL

微信搜:import_bigdata,大数据领域硬核原创作者 554

openpyxl - 操作Excel文件

操作Excel文件 新建工作簿 处理数据 获取一个单元格 获取多个单元格 写数据 保存 编辑文件操作Excel文件新建工作簿新建工作簿不需要再系统中创建新文件,在内存中操作即可。from openpyxl import Workbook# 工作簿实例化 wb = Workbook()工作簿创建后,工作簿至少有一个工作表,可以用openpyxl.workbook.Workbook.active()方法

爱生活没道理的博客 7322

【Android 11】使用Android Studio调试系统应用之Settings移植(五):编译Settings 模块、解决编译错误

基于Andorid 11,系列第5篇文章,本章开始,终于轮到解决正主Settings的编译问题了,使用android studio编译出Settings.apk,能看到这一章的同学,也着实不容易了,再接再厉

上周的博客 3919

FC7300 SPI MCAL配置引导

Example - QMI8A01z外设:Example - QMI8A01z外设:

舊梦的博客 258

python xlsx处理openpyxl

https://automatetheboringstuff.com/chapter12/ Working with Excel Spreadsheets Excel is a popular and powerful spreadsheet application for Windows. The openpyxl module allows your Py

mengtianwxs的专栏 1万+

基于STM32的智能快递柜设计(全部资料)

本文设计了一种基于STM32F407ZGT6的智能快递柜系统,通过模块化硬件设计和软件算法优化,实现了24小时无人值守、温湿度智能调控、远程监控等功能。系统集成OLED显示、GSM通信、舵机控制、超声波检测等模块,存取响应时间≤3秒,识别准确率达99.2%,较传统模式效率提升60%。测试表明系统运行稳定,用户满意度达92%,具有成本低、安全性高、可扩展性强等特点,为智慧物流末端配送提供了创新解决方案。未来可引入AI算法、太阳能供电等功能进一步优化系统性能。

3254968421的博客 587

职场人必备的技巧!5 分钟掌握 openpyxl 操作:Python 轻松处理 Excel

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

m0_60721065的博客 195

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

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

作者:Sinchard来源:python中文社区大家好,我是小z之前给大家写过几篇关于Pandas批量操作Excel的实战内容,反响不错。今天再分享一波用openpyxl操作Excel的文...

SeizeeveryDay的博客 302

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

对比:手动操作Excel vs openpyxl自动化处理

工作中经常需要处理Excel数据的朋友们,肯定都经历过这样的痛苦:面对成千上万行数据,手动操作不仅费时费力,还容易出错。最近我用Python的openpyxl库做了一个自动化处理Excel的对比实验,结果让我大吃一惊——自动化处理竟然能节省90%以上的时间!实际使用中我发现,在InsCode上编写和测试Python脚本特别方便,代码修改后立即能看到效果,对于学习和实验Excel自动化处理非常有帮助。实际测试中,处理10000行数据,手动操作平均需要15-20分钟,而自动化脚本只需要不到10秒。

EmeraldWolf23的博客 895

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

AI如何用openpyxl自动处理Excel表格?

参数化设计让脚本更灵活,建议输入输出路径、工作表名等都支持参数传入日志记录很重要,处理过程中记录操作细节方便排查问题进度显示对于大文件很有必要,可以添加处理行数提示在InsCode(快马)平台上实践发现,这类数据处理脚本虽然不需要持续运行,但平台的一键运行功能非常方便测试。不需要配置本地环境,直接在线验证代码效果,特别适合快速验证想法。对于需要定期执行的脚本,还可以设置定时任务实现完全自动化。

NightshadeRaven21的博客 956

10分钟上手Python for Excel:从环境搭建到第一个Excel自动化脚本

Python for Excel是O'Reilly图书《Python for Excel》的配套项目,它提供了丰富的工具和示例,帮助用户快速掌握如何使用Python处理Excel文件。通过Python的强大功能,你可以轻松实现Excel数据的读取、分析、处理和自动化操作,极大提升工作效率。 ## 准备工作:安装Python for Excel环境 ### 克隆项目代码库 首先,你需要将项目代码

gitblog_00540的博客 788

使用python,openpyxl教你轻松搞定了excel大数据写入。大量数据导入无忧。

除了做程序的开发,有可能你还要自己做一下性能的测试,例如一个导入功能,你需要导入大批量的数据,多到什么程度。 几万条甚至几十万条数据。 导入的数据我们第一个想到的当然是excel导入数据。那几万条数据我们需要怎么处理呢。 首先像想一下,我先写满一行数据,20个字段,ok,搞定,然后我们来……下拉,拉到一半然后 你就绝望了,怎么30分钟过去了才两万条数数据。 很显然,费时费力,时间一长你就会发现头昏眼花。来这里我们来一个完整的代码模板,帮助你轻松搞定所有的数...

大家一起学编程(python) 6082

5分钟搞定:用Python快速处理Excel合并单元格

今天在整理公司报表时,遇到了一个很常见的需求:需要把Excel中相同内容的相邻行自动合并单元格。合并单元格是Excel处理中的高频操作,比如按部门合并员工名单、按日期合并销售数据等场景。核心需求是:自动识别相邻行中指定列的值是否相同,如果相同就合并对应的单元格区域。用openpyxl实现的核心逻辑是遍历指定列,记录相同值的起始和结束行号,然后调用merge_cells方法。使用pandas时,可以先用groupby找出需要合并的行范围,然后通过openpyxl引擎来执行合并。在实际操作中,我发现使用。

ThunderstormLynx23的博客 949

python中for循环读取每一列数据_5分钟看懂Python之Excel文件操作

我们在工作生活中我们经常会遇到各种各样的Excel文件,也需要对这些文件进行相关的数据处理,Python有种类繁多的库,可以帮助我们做到这一点,例如openpyxl、pandas、xlsxwriter、pyxlsb、xlrd、xlwt等。在本文中,我将指导你使用openpyxl在Python中读取和写入Excel文件。如果你好奇心强,那也可以查看这个链接来寻找其他的Excel库列表:https:/...

weixin_39687542的博客 5327

用快马 AI 一键生成 Python openpyxl 工具,告别繁琐的 Excel 数据处理

如果你也需要处理Excel报表,强烈建议试试用快马生成基础代码,比自己从头写效率高很多。即使不懂Python,通过修改AI生成的代码注释也能快速定制功能,亲测对办公自动化帮助巨大。的一键部署体验,生成的工具可以直接在线使用,不用配置Python环境。对于这种带图形界面的应用,平台能自动生成可访问的网页版,同事点开链接就能操作,特别方便。的AI生成代码功能,几分钟就能搞定一个数据处理工具。下面分享我的实践过程。整个过程不到5分钟,准确率100%,还能自动保留处理日志。

OnyxPanther23的博客 917

Python办公自动化:用openpyxl批量插入图片到Excel,5分钟搞定产品目录

本文详细介绍了如何利用Python的openpyxl库实现Excel办公自动化,批量插入图片以快速生成产品目录。通过实战代码演示,解决了图片自适应单元格、批量匹配与性能优化等核心痛点,帮助电商运营、产品经理等非技术人员在5分钟内高效完成繁琐的图文排版工作。

potato的博客 526

5分钟了解python_5分钟看懂Python之Excel文件操作

我们在工作生活中我们经常会遇到各种各样的Excel文件,也需要对这些文件进行相关的数据处理,Python有种类繁多的库,可以帮助我们做到这一点,例如openpyxl、pandas、xlsxwriter、pyxlsb、xlrd、xlwt等。在本文中,我将指导你使用openpyxl在Python中读取和写入Excel文件。如果你好奇心强,那也可以查看这个链接来寻找其他的Excel库列表:https:/...

weixin_39986543的博客 392
上一篇: 厉害了!用“Pandas”现在也可以绘制交互式的图形了!
下一篇: 专属Python开发者的完美终端工具—Rich
菜鸟学Python
博客等级 码龄9年 8062粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值