Как заполнить список списков
Нужно заполнить список списков данными из Excel файла
import openpyxl, os, pprint
wb = openpyxl.load_workbook('qwerty.xlsx')
sheet = wb.active
tmp = []
for row in range(1, sheet.max_row + 1):
for col in range(1, sheet.max_column + 1):
tmp[row-1][col-1] = sheet.cell(column=col, row=row).value
pprint.pprint(tmp)
в таком виде ошибка IndexError: list index out of range
Ответы (2 шт):
Автор решения: asanisimov
→ Ссылка
- полностью создать заранее список списков, заполненных дефолтными значениями. Остальную часть можно не менять.
tmp = [[None for _ in range(sheet.max_column)] for _ in range(sheet.max_row)]
- Создайте только список со списками, тогда значения надо добавлять.
import openpyxl, os, pprint
wb = openpyxl.load_workbook('qwerty.xlsx')
sheet = wb.active
tmp = [[] for _ in range(sheet.max_row)]
for row in range(1, sheet.max_row + 1):
for col in range(1, sheet.max_column + 1):
tmp[row-1].appand(sheet.cell(column=col, row=row).value)
pprint.pprint(tmp)
Ну и если отойти от этой реализации то можно попробовать создать фрэйм данных, в pandas есть read_excel().
Автор решения: Виталий Шиповалов
→ Ссылка
Еще вот такой вариант додумал:
import openpyxl, os, pprint
wb = openpyxl.load_workbook('qwerty.xlsx')
sheet = wb.active
tmp = []
for row in range(1, sheet.max_row + 1):
temp2 = []
for col in range(1, sheet.max_column + 1):
temp2.append(sheet.cell(column=col, row=row).value)
tmp.append(temp2)
pprint.pprint(tmp)