我的 python 代码如何自动知道在 Excel 中的哪一行停止

how can my python code automatically know which row to stop at in Excel

我有一个 Excel 工作表。下面的代码将应用于每一行数据。现在它指定为 100 行。每次我 运行 这段代码时,行数都会改变。我必须手动打开我的脚本并调整行数。有没有办法每次都没有手动过程,并且自动计算相关的行数。我在编码方面没有太多知识。请帮忙。

import openpyxl
wb = openpyxl.load_workbook('Formal Units.xlsx', data_only=True)
sheet = wb['Sheet1']

last_row = 100  
    data_column = 26
    result_column = 10
    
    for i in range(2, last_row):
        if sheet.cell(row=i, column=data_column).value == "R":
            sheet.cell(row=i, column=result_column).value = "Y"
        else:
            sheet.cell(row=i, column=result_column).value = "N"

wb.save('Formal Units.xlsx')
from openpyxl import load_workbook
wb = load_workbook('test.xlsx')
wb.worksheets[0]['h6'] = None

print((wb.worksheets[0].max_row, wb.worksheets[0].max_column))

def find_edges(sheet):
    row = sheet.max_row
    while row > 0:
        cells = sheet[row]
        if all([cell.value is None for cell in cells]):
            row -= 1
        else:
            break
    if row == 0:
        return 0, 0

    column = sheet.max_column
    while column > 0:
        cells = next(sheet.iter_cols(min_col=column, max_col=column, max_row=row))
        if all([cell.value is None for cell in cells]):
            column -= 1
        else:
            break
    return row, column

print(find_edges(wb.worksheets[0]))

您可以使用 iter_row 迭代行以获取 openpyxl Cell 对象或仅 values 以获取单元格值。

在你的例子中:

import openpyxl
wb = openpyxl.load_workbook('Formal Units.xlsx', data_only=True)
sheet = wb['Sheet1']
rows_generator = sheet.values
data_column = 26
result_column = 10
headers = next(rows_generator)  # comment if you don't have header row
for (i, row) in enumerate(rows_generator, start=2):  # if you don't have header row start=1
    sheet.cell(row=i, column=result_column).value = 'Y' if row[data_column-1] == 'R' else 'N'  # -1, because list is 0 indexed
wb.save('Formal Units.xlsx')