Как перебрать каждую строку в книге Excel с openpyxl (как решить проблему бесконечного цикла)? - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть файл excel, в котором есть личная информация. Я пытаюсь получить эту информацию для каждой строки в файле Excel и выполнять различные виды сортировки и переназначения. Мой первый шаг - попытаться извлечь информацию из рабочей книги и сохранить ее в словаре списков. Моя программа заканчивается бесконечным циклом. В чем моя ошибка?

Вот код, который я пробовал:

import openpyxl

file = openpyxl.load_workbook("peopleList.xlsx")
sheet = file.active

person = {}
people = []

reader = 1

while sheet["A" + str(reader)].value != "":
    person["name"] = sheet["A" + str(reader)].value
    person["gender"] = sheet["B" + str(reader)].value
    person["school"] = sheet["C" + str(reader)].value
    person["ch1"] = sheet["D" + str(reader)].value
    person["ch2"] = sheet["E" + str(reader)].value
    person["ch3"] = sheet["F" + str(reader)].value
    people.append(person)
    person = {}

print(people)

1 Ответ

0 голосов
/ 12 апреля 2019

У вас была ошибка в вашем состоянии.В операторе while вы проверяете, есть ли значение в «A1».Поскольку там всегда есть значение, цикл бесконечен.Это работает

import openpyxl

file = openpyxl.load_workbook('peopleList.xlsx')
sheet = file.active

person = {}
people = []


for reader in np.arange(1,len(sheet['A'])+1):
    person["name"] = sheet["A" + str(reader)].value
    person["gender"] = sheet["B" + str(reader)].value
    person["school"] = sheet["C" + str(reader)].value
    person["ch1"] = sheet["D" + str(reader)].value
    person["ch2"] = sheet["E" + str(reader)].value
    person["ch3"] = sheet["F" + str(reader)].value
    people.append(person)
    person = {}

print(people)

Это важная строка:

for reader in np.arange(1,len(sheet['A'])+1):

Это также может быть сделано с помощью оператора while, но вы с гораздо меньшей вероятностью получите бесконечный цикл вдля цикла, поэтому я нахожу их более явными во многих случаях.То, что я делаю здесь, - это подсчет длины столбца A (при условии, что он такой же, как и у других столбцов, а затем просмотр списка чисел [1,2,3,...,len(A)] путем создания этого списка с np.arange(len(A)).

...