Python办公软件自动化,5分钟掌握openpyxl操作

openpyxl 学习- iter_rows和iter_cols iter_cols是openpyxl库中的一个方法,用于按列迭代读取内容。在openpyxl中,iter_cols方法用于返回一个生成器,该生成器按列遍历给定的行范围。它接受四个参数:min_row,min_col,max_row和max_col,这些参数定义了要迭代的单元格范围。 阅读详情

今天给大家分享一篇用openpyxl操作Excel的文章。(文末附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)

作为一个IT的过来人,我分享的都是一些自己的学习方法和干货。

最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】。

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、入门学习视频

四、实战案例

五、面试资料



最后,千万别辜负自己当时开始的一腔热血,一起变强大变优秀。

Python中openpyxl处理Excel文件详解 前言:openpyxl是一个用于读/写excel 2010 xlsx/xlsm/xltx/xltm文件的python库,所有对phpexcel团队的赞誉都是因为openpyxl最初是基于phpexcel的。以下从Excel格式处理,单元格数值修改等方面详解openpyxl的操作功能。 一、Excel单元格设置 ... 阅读详情

相关推荐

06爆肝整理2025年最详细的openpyxl使用语法

openpyxl是一个功能强大的库,它允许用户在 Python 中操作 Excel 文件。通过上述介绍,你应该能够了解如何使用这个库来满足你的编程需求。无论是创建新的工作簿、编辑现有的工作簿,还是格式化单元格和创建图表,openpyxl都能提供强大的支持。请注意,由于openpyxl库的属性和方法非常多,这里不可能一一列举所有细节。上述内容提供了一个全面的概览和一些关键点,帮助你开始使用openpyxl。对于更深入的学习和具体问题,你可以查阅openpyxl的官方文档和 API 参考。

m0_58149406的博客 1620

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

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

墓地行者的博客 499

Cibersort免疫浸润 --- 详细教程

免疫浸润是指免疫细胞如淋巴细胞、浆细胞、巨噬细胞等进入到组织或器官中,并在这些组织或器官中发挥免疫功能的过程。免疫细胞的浸润可以是炎症反应的一部分,也可以是针对感染、肿瘤或其他疾病的免疫应答的一部分。免疫浸润通过调节免疫反应和炎症反应的程度和类型,起到维护机体免疫平衡和清除异常细胞或病原体的作用。在某些情况下,免疫浸润可能导致炎症反应过度,引起组织损伤,例如自身免疫性疾病。因此,免疫浸润在许多疾病的诊断和治疗中都具有重要的意义。免疫浸润可以通过组织切片染色和免疫组织化学等方法观察和分析。

ZxVSaccount的博客 9109

Python之第十二章 处理Excel电子表格

官方文档:https://openpyxl.readthedocs.io/en/stable/注意:openpyxl模块只支持xlsx/xlsm/xltx/xltm格式,不支持xls格式。

shy的博客 8504

解锁SPWM电压利用率:三次谐波注入幅值的黄金分割点

本文深入探讨了SPWM电压利用率的提升方法,重点介绍了三次谐波注入技术及其黄金分割点(1/6比例)。通过数学推导和工程实践,揭示了如何通过特定幅值的三次谐波注入将电压利用率从86.6%提升至115%,与SVPWM相当。文章还提供了实验室调试流程和DSP实现代码,帮助工程师优化逆变器设计。

weixin_30729609的博客 916

matlab中高频变压器怎么找,干货|手把手教你绕制高频变压器

原标题:干货|手把手教你绕制高频变压器绕制一个变压器所需材料:磁芯、骨架、各种铜线、麦拉胶带。变压器参数:磁芯:EE22原边:134T(1-3脚),辅助:32T(5-4脚),输出:15T(10-9脚)原边电感:1380±10%uH漏感:≤44uH引脚分布图: 特别注意:绕制方法为网上下载,其中变压器绕制方法是对的,但其中存在着很多问题(比如,正规变压器的绕组的头和尾是要添加铁氟龙套管的,每一层之间...

weixin_30895121的博客 2125

Python办公软件自动化,5分钟掌握 openpyxl 操作

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

Python数据挖掘 1366

Abel逆变换及其求解方法

Abel逆变换常应用在轴对称的、光学薄的火焰、羽流或等离子体重建。

weixin_49783507的博客 8375

Python办公软件自动化,5分钟掌握openpyxl操作!

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

wly55690的博客 137

PADS安装教程(超详细)

声明:个人实践 一、工具准备 pads9.5完整破解版百度网盘提取码【wjx9】 链接:https://pan.baidu.com/s/1pIP6BJO435ssmF7Hjwyz8A 提取码:wjx9 安装环境:win10 64位 二、开始解压安装 关闭杀毒,exe以管理员身份运行 点击【skip】,不然又得licese 点击【agree】 点击【modify】 设置安装的工具、路径及工程路径 设置完成后,开始【install】 在之后注册。 将Crack复制到PADS安装目录

qq_42057393的博客 5万+

Cursor自动生成测试用例

或者把你已有的规则直接复制粘贴到这个文档内(这里我用的是Markdown格式和CSV格式的测试用例生成规则,可以同时生成Markdown和CSV格式的测试用例)。在AI对话框这里,我们可以看到Cursor会逐步来帮我们生成测试用例,先分析识别需求文档,然后生成测试用例,最后会进行质量检查,确保生成的用例符合规范。生成的Markdown格式,可直接导入Xmind,生成思维导图,对应到具体的功能模块看具体的测试点,逻辑会更直观一些。(1)选中规则文档和需求文档:@你的测试用例规则文档@你的需求文档。

十二测试录 2433

实用技巧!Python办公软件自动化,5分钟掌握openpyxl操作

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

2401_86168842的博客 431

C# Socket通信从入门到精通(14)——多个异步UDP客户端C#代码实现(史上最全)

本文详细介绍了Socket通信中多个异步Udp客户端功能的实现、介绍如何使用多个客户端与多个服务器进行数据的交互,包含连接服务器、断开服务器、发送数据、读取数据、C#代码实现,由高级工程师多年经验总结而成,绝对干货!

qq_34059233的博客 1982
上一篇: 神了!用Python预测世界杯决赛,发现准确率还挺高!
下一篇: 过了年30岁了,生活所迫考虑转行,从头开始学python(努力的学)还能有机会找到工作
智泊AI官方
博客等级 码龄6年 8638粉丝 2667原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值