Как заполнить список списков

Нужно заполнить список списков данными из 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
  1. полностью создать заранее список списков, заполненных дефолтными значениями. Остальную часть можно не менять.
tmp = [[None for _ in range(sheet.max_column)] for _ in range(sheet.max_row)]
  1. Создайте только список со списками, тогда значения надо добавлять.
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)
→ Ссылка