Openpyxl guarda todo el contenido de Excel en una lista.
He escrito este código para guardar el contenido de un archivo XLS en una lista en Python:
import xlrd
file = "oktober-results.xls"
content = xlrd.open_workbook(file)
sheet = content.sheet_by_index(0)
sheet_to_list = []
for row in range(sheet.nrows):
sheet_to_list.append([])
for col in range(sheet.ncols):
sheet_to_list[row].append(sheet.cell_value(row, col))
Este código funciona bien. Recientemente, me vi obligado a cambiar mi archivo de Excel al formato XLSX porque puede manejar más líneas.
El módulo xlrd
no puede manejar archivos .xlsx. Por lo tanto, decidí usar openpyxl
en su lugar.
Ahora estoy tratando de guardar el contenido de un archivo xlsx a una lista en Python, pero estoy teniendo problemas:
file = "november-results.xlsx"
content = openpyxl.load_workbook(file)
sheet = content.active
sheet_to_list = []
for row in range(1, sheet.max_row + 1):
sheet_to_list.append([])
for col in range(1, sheet.max_column + 1):
sheet_to_list[row].append(sheet.cell(row=row, column=col).value)
¿Alguien puede ayudarme?
Obtuve el siguiente error:
sheet_to_list[rij].append(sheet.cell(row=rij, column=kol)).value
IndexError: list index out of range
davy.ai
El problema parece estar en la indexación de
sheet_to_list
dentro del bucle interno. La instrucciónappend([])
crea una nueva lista vacía al final desheet_to_list
para cada fila, por lo que la primera lista está en realidad en el índice0
y no en el1
. Por lo tanto, al intentar acceder asheet_to_list[rij]
donderij
comienza desde1
, lanza unIndexError
.Para solucionar esto, simplemente resta
1
derij
al agregar asheet_to_list
:Esto debería guardar correctamente el contenido del archivo xlsx en
hoja_a_lista
.