Как импортировать весь лист в список через openpyxl - PullRequest
0 голосов
/ 21 февраля 2019

У меня проблема с импортом данных из электронной таблицы.Я пытаюсь создать список, содержащий все данные.Но только последняя строка добавлена ​​в список.

from openpyxl import load_workbook

path = "excel.xlsx"
l_data = load_workbook(path)
sheet = l_data.active
c_row = sheet.max_row
c_column = sheet.max_column
out_data=[]
dict={}
for a in range(1, c_row + 1):
    for b in range(1, c_column + 1):
        ob = sheet.cell(row=a, column=b)
        dict[b] = ob.value
    out_data.append(dict)

Мне нужны такие выходные данные: [{1: "row1_call1", 2: "row1_call2"}, {1: "row2_call1", 2: "row2_call2"}]

1 Ответ

0 голосов
/ 21 февраля 2019

Попробуйте это:

from openpyxl import load_workbook

path = "excel.xlsx"
l_data = load_workbook(path)
sheet = l_data.active
c_row = sheet.max_row
c_column = sheet.max_column
out_data=[]
dict={}
for a in range(1, c_row + 1):
    for b in range(1, c_column + 1):
        ob = sheet.cell(row=a, column=b)
        dict[b] = ob.value

    out_data.append(str(dict))

print(out_data)

Это меняет тип значений dict.Таким образом, только эта строка изменяется с:

out_data.append(dict)

на:

out_data.append(str(dict))

Проверьте этот сайт, если хотите узнать больше о добавлении dict в список: python: добавление словаря всписок - я вижу указатель, похожий на поведение

Так что это тоже работает:

out_data.append(dict.copy())
...