首页 > 编程问答 >Python 3 - openpyxl - 按名称迭代列

Python 3 - openpyxl - 按名称迭代列

时间:2024-07-22 12:21:46浏览次数:14  
标签:python excel openpyxl

使用 openpyxl 不按数字而是按列标题(ws 第一行中的字符串值)迭代列的最简单方法是什么:

如下所示:

for cell in ws.columns['revenue']:
    print(cell.value)

不幸的是, openpyxl 不直接支持像 ws.columns['revenue'] 这样按列标题进行迭代。 openpyxl 中的 ws.columns 返回所有列作为列对象的生成器,你必须迭代它们并检查每个单元格以找到匹配的标题。

下面是如何按列标题迭代列的两种方法:

1. 使用 Worksheet.iter_rows() 并查找标题索引:

import openpyxl

# 加载工作簿和工作表
wb = openpyxl.load_workbook('your_file.xlsx')
ws = wb['Sheet1']

# 你要查找的列标题
column_title = 'revenue'

# 查找列索引
for col_idx, column in enumerate(ws.iter_cols(1, ws.max_column)):
    if column[0].value == column_title:
        column_index = col_idx + 1
        break
else:
    raise ValueError(f"未找到列 '{column_title}'")

# 使用找到的索引迭代列中的单元格
for row in ws.iter_rows(min_row=2, min_col=column_index, max_col=column_index):
    for cell in row:
        print(cell.value)

此代码首先迭代第一行以找到与你的 column_title 匹配的标题单元格。找到后,它会存储列索引并使用 ws.iter_rows() 迭代该特定列,从第二行开始。

2. 使用 Worksheet.iter_rows() 并直接访问单元格:

import openpyxl

# 加载工作簿和工作表
wb = openpyxl.load_workbook('your_file.xlsx')
ws = wb['Sheet1']

# 你要查找的列标题
column_title = 'revenue'

# 在标题行中查找列索引
header_row = next(ws.iter_rows())
column_index = None
for idx, cell in enumerate(header_row):
    if cell.value == column_title:
        column_index = idx
        break

# 如果找到列标题,则迭代所有数据行
if column_index is not None:
    for row in ws.iter_rows(min_row=2):
        cell = row[column_index]
        print(cell.value)

此代码首先在标题行中查找列索引。找到后,它会在迭代数据行时使用该索引直接访问该列中的单元格。

这两种方法都实现了相同的结果:它们允许你按列标题而不是数字索引迭代列中的单元格。选择你认为更易读且更适合你的用例的方法。

标签:python,excel,openpyxl
From: 34731662

相关文章

  • Python selenium 网络抓取 recaptcha
    我想抓取一个网站,但在此之前有一个验证码,我什至使用api获取了数据,并且我还将其注入到网站中,因为网页没有提交按钮,我无法提交。流程是这样的,如果我解决同一网址中的验证码,隐藏的内容将被显示。但它并没有得到解决。我到处都找过了。我找不到解决方案。谁能帮我解决这个问题?......
  • Python 装饰器 详解+案例
    Python装饰器是一种特殊的函数,用于修改其他函数的功能。装饰器可以在不改变原函数代码的情况下,对函数进行增加、修改或者扩展功能。装饰器的语法形式是在函数定义前使用@符号,并在@后面加上装饰器的名称。装饰器函数接受被装饰函数作为参数,并返回一个修改后的函数。impo......
  • 如何在 vercel 部署中路由 python 和 typescript 无服务器函数
    我从一个带有Next.js和Typescript前端以及python后端的全栈应用程序开始。由于我们想在vercel上部署,因此我们将所有后端功能迁移到/api文件夹中的typescript函数中,可通过以下方式访问:fetch('api/**foldername**)问题是我有一个简单的pytorch模型,因此......
  • python中datetime模块
    datetime模块可以更方便的显示日期,并对日期进行计算。datetime模块中常用的类及其功能描述如下:datetime.datetime------>表示日期时间的类(常用)datetime.timedelta------>表示时间间隔的类(常用)datetime.date------>表示日期的类datetime.time------>表示时间的类datetime.......
  • Python - requests
    前言:介绍:安装及验证:使用:连续接口请求:传参方式: 前言:当你上班无聊的时候,你做什么,说实话有人让我写个requests的教程,教程我觉得网上已经有很多教程了,也很全面,我还是不要献丑了介绍:哎,我认为就是一个接口请求的仓库,不过requests属于第三方库,......
  • 使用onlyoffice完成Word、Excel、PowerPoint 文件在线预览、编辑、保存功能
    环境准备64-bitWindowsServer2012orhigher我自己使用的服务器配置是2核2G,带宽是2M,也就是说高于这个配置的服务器都是没有问题的。大家在挑选的时候,如果只是用来作为onlyoffice的文档服务器来使用,那么配置可以低一些,带宽越大越好安装步骤将上面的安装包全部下载到本地服......
  • Python学习计划——2.4列表推导式(List Comprehensions)
    列表推导式是Python的一种简洁且强大的语法,用于生成新的列表。它可以用更少的代码、更清晰的方式来创建列表,特别是在处理简单的循环和条件操作时。1.基本语法列表推导式的基本语法如下:[expressionforiteminiterable]expression:表达式,计算结果用于生成列表的元素。ite......
  • Python学习计划——2.3常用内置函数(len, max, min, sum, etc.)
    Python提供了许多内置函数,用于简化对数据结构的操作。以下是一些常用的内置函数及其详细说明。1.len()len()函数用于返回对象(如列表、元组、字符串、字典等)的长度(元素个数)。示例:#列表fruits=["apple","banana","cherry"]print(len(fruits))#输出:3#元组c......
  • 哪个 Python 框架可以在 Google Collab 中显示和更改图像?
    我希望能够在使用GoogleCollab时为RL绘制高fps的位图。我现在可以使用OpenCV绘制图像cv2_imshowgoogle替换cv2.imshow但是,它无法替换现有图像,它下面绘制了新的我能够在替换imshow函数中使用一些JavaScript来修复它。但刷新率约为......
  • VSCode 自动建议 python 导入而不依赖 Intellisense
    我正在使用Transformer中的AutoModel之类的对象,并且经常遇到自动导入建议无法找到的对象。我总是希望VSCode建议“从Transformer中执行”,而不是费心寻找它找不到的原因每当看到未定义的“AutoModel”时,都会导入AutoModel”,因此无需扫描任何python导入目录。这......