python - openpyxl 如果包含数据则跳过该行

标签 python excel openpyxl

我的程序每次都会覆盖第一行,但我希望它跳过其中有数据的每一行并转到下一行,依此类推,直到找到完全空的行,然后在其中添加数据。 数据被添加到正确的列,但不是正确的行。 我知道我的循环和检查过于嵌套,但我稍后会重新审视它。

import openpyxl as xl
from classes import Inschrijving


wb = xl.load_workbook("mosselen.xlsx")
ws = wb['ZATERDAG']


questions = [
    ('Voornaam: '),
    ('Achternaam: '),
    ('Aantal mosselen groot: '),
    ('Aantal mosselen groot voor helpers: '),
    ('Aantal mosselen klein: '),
    ('Aantal mosselen klein voor helpers: '),
    ('Aantal paardenworsten groot: '),
    ('Aantal paardenworsten groot voor helpers: '),
    ('Aantal paardenworsten klein: '),
    ('Aantal paardenworsten klein voor helpers: '),
    ('Brood: '),
    ('Betaald: ')]


def new():
    voornaam = input(questions[0])
    achternaam = input(questions[1])
    mg = input(questions[2])
    mgh = input(questions[3])
    mk = input(questions[4])
    mkh = input(questions[5])
    pg = input(questions[6])
    pgh = input(questions[7])
    pk = input(questions[8])
    pkh = input(questions[9])
    brood = input(questions[10])
    betaald = input(questions[11])
    insch1 = Inschrijving(voornaam=voornaam, achternaam=achternaam, mg=mg, mgh=mgh, mk=mk, mkh=mkh, pg=pg, pgh=pgh, pk=pk, pkh=pkh, brood=brood, betaald=betaald)
    print(f'{insch1.voornaam, insch1.achternaam}\nmosellen groot {insch1.mg}\nmosellen groot helper {insch1.mgh}\nmosellen klein {insch1.mk}\nmosellen klein helper {insch1.mkh}\npaardenworsten groot {insch1.pg}\npaardenworsten groot helper {insch1.pgh}\npaardenworsten klein {insch1.pk}\npaardenworsten klein helper {insch1.pkh}\nbrood {insch1.brood}\nbetaald {insch1.betaald}')

    if mg == "0":
        mg = None
    if mgh == "0":
        mgh = None
    if mk == "0":
        mk = None
    if mkh == "0":
        mkh = None
    if pg == "0":
        pg = None
    if pgh == "0":
        pgh = None
    if pk == "0":
        pk = None
    if pkh == "0":
        pkh = None
    if brood == "n":
        brood = None

    row_index = 6
    column_index_to_start = 4
    for row in ws.iter_rows(min_row=5, min_col=4, max_col=4, max_row=ws.max_row - 9):
        for cell in row:
            print(cell.value)
            if cell.value is None:
                for row2 in ws.iter_rows(min_row=5, min_col=5, max_col=5, max_row=ws.max_row- 9):
                    for cell2 in row2:
                        if cell2.value is None:
                            for col_index, value in enumerate((voornaam, achternaam, mg, mgh, mk, mkh, pg, pgh, pk, pkh, brood, betaald),
                                        column_index_to_start):
                                ws.cell(row=row_index, column=col_index).value = value
                        else:
                            pass
            else:
                pass



def start():
    a = input('(1) Nieuwe inschrijving of (2) bijwerken: \n')
    if a == "1":
        new()
    elif a == "2":
        edit()
    else:
        print("Ongeldig")
        start()


def edit():
    pass


start()
wb.save(filename='mosselen_test1.xlsx')
wb.close()

最佳答案

只需编辑包含以下行的数据写入器的行即可为您工作。

while ws.cell(row=row_index, column=col_index).value != "":
    row_index += 1
ws.cell(row=row_index, column=col_index).value = value

关于python - openpyxl 如果包含数据则跳过该行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59021228/

相关文章:

python - 如何在for循环中将整数浮点到最后一个小数

python - 启动 Python shell 时出错,一周前运行的脚本出错

sql - SQL 查询(SQL 服务器)的 Between 子句不起作用?

从代码中删除 .select 的 VBA 问题

python - 在 Python 3 中使用 OpenPyXL 复制整个列

python - 我可以使用 os.mkdir() 在运行时创建具有动态名称的目录吗?

vba - First.Cells(i,1) 是如何工作的?

python - openpyxl:将日期转换为数字

python - 在 Excel 工作表的开头插入标题

python - python 中的 webdriver.PhantomJS 超时?