gpt4 book ai didi

python - 在 openpyxl 的优化阅读器中使用 ws.iter_rows 迭代一系列行

转载 作者:太空狗 更新时间:2023-10-29 18:16:30 24 4
gpt4 key购买 nike

我需要读取 10x5324 个单元格的 xlsx 文件

这是我想做的事情的要点:

from openpyxl import load_workbook
filename = 'file_path'

wb = load_workbook(filename)
ws = wb.get_sheet_by_name('LOG')

col = {'Time':0 ...}

for i in ws.columns[col['Time']][1:]:
print i.value.hour

代码运行时间太长(我正在执行操作,而不是打印),过了一会儿我不耐烦并取消了它。

知道如何在优化的阅读器中使用它吗?我需要遍历一系列行,而不是遍历所有行。这是我尝试过的,但这是错误的:

wb = load_workbook(filename, use_iterators = True)
ws = wb.get_sheet_by_name('LOG')
for i in ws.iter_rows[1:]:
print i[col['Time']].value.hour

如果没有范围功能,我有什么办法可以做到吗?

我猜一种方法是:

for i in ws.iter_rows[1:]:
if i.row == startrow:
continue
print i[col['Time']].value.hour
if i.row == endrow:
break

但是有没有更优雅的解决方案呢?(顺便说一句,这也不起作用)

最佳答案

具有下界的最简单的解决方案是这样的:

# Your code:
from openpyxl import load_workbook
filename = 'file_path'
wb = load_workbook(filename, use_iterators=True)
ws = wb.get_sheet_by_name('LOG')

# Solution 1:
for row in ws.iter_rows(row_offset=1):
# code to execute per row...

这是执行您所描述内容的另一种方式,使用 enumerate功能:

# Solution 2:
start, stop = 1, 100 # This will allow you to set a lower and upper limit
for index, row in enumerate(ws.iter_rows()):
if start < index < stop:
# code to execute per row...

index 变量记录你所在的行,所以它可以用来代替 range 或 xrange。这种方法非常简单,与范围或切片不同,它适用于迭代器,如果需要,也可以仅用于下限。干杯!

关于python - 在 openpyxl 的优化阅读器中使用 ws.iter_rows 迭代一系列行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10614518/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com