Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

293
Vistas
Iterar sobre hojas de trabajo, filas, columnas

Quiero imprimir todos los datos (todas las filas) de una columna específica en python usando openpyxl . Estoy trabajando de esta manera;

 from openpyxl import load_workbook workbook = load_workbook('----------/dataset.xlsx') sheet = workbook.active for i in sheet: print(sheet.cell(row=i, column=2).value)

pero da

si fila < 1 o columna < 1: TypeError: tipos no ordenados: tuple() < int()

Porque estoy iterando en row=i . Si uso sheet.cell(row=4, column=2).value , imprime el valor de la celda. Pero, ¿cómo puedo iterar sobre todos los documentos?

Editar 1

En algunas investigaciones, se encuentra que los datos se pueden obtener usando el Nombre de la hoja. La Sheet 1 existe en el archivo .xlsx pero sus datos no se imprimen. ¿Algún problema en este código?

 workbook = load_workbook('---------------/dataset.xlsx') print(workbook.get_sheet_names()) worksheet =workbook.get_sheet_by_name('Sheet1') c=2 for i in worksheet: d = worksheet.cell(row=c, column=2) if(d.value is None): return else: print(d.value) c=c+1
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Lea la documentación de OpenPyXL

Iteración sobre todas las worksheets de trabajo en un workbook de trabajo, por ejemplo:

 for n, sheet in enumerate(wb.worksheets): print('Sheet Index:[{}], Title:{}'.format(n, sheet.title))

Salida :

 Sheet Index:[0], Title: Sheet Sheet Index:[1], Title: Sheet1 Sheet Index:[2], Title: Sheet2

Iteración sobre todas las rows y columns en una hoja de trabajo:

 worksheet = workbook.get_sheet_by_name('Sheet') for row_cells in worksheet.iter_rows(): for cell in row_cells: print('%s: cell.value=%s' % (cell, cell.value) )

Salida :

 <Cell Sheet.A1>: cell.value=²234 <Cell Sheet.B1>: cell.value=12.5 <Cell Sheet.C1>: cell.value=C1 <Cell Sheet.D1>: cell.value=D1 <Cell Sheet.A2>: cell.value=1234 <Cell Sheet.B2>: cell.value=8.2 <Cell Sheet.C2>: cell.value=C2 <Cell Sheet.D2>: cell.value=D2

Iteración sobre todas las columns de una row , por ejemplo, row==2 :

 for row_cells in worksheet.iter_rows(min_row=2, max_row=2): for cell in row_cells: print('%s: cell.value=%s' % (cell, cell.value) )

Salida :

 <Cell Sheet.A2>: cell.value=1234 <Cell Sheet.B2>: cell.value=8.2 <Cell Sheet.C2>: cell.value=C2 <Cell Sheet.D2>: cell.value=D2

Iteración sobre todas las rows , solo column 2 :

 for col_cells in worksheet.iter_cols(min_col=2, max_col=2): for cell in col_cells: print('%s: cell.value=%s' % (cell, cell.value))

Salida :

 <Cell Sheet.B1>: cell.value=12.5 <Cell Sheet.B2>: cell.value=8.2 <Cell Sheet.B3>: cell.value=9.8 <Cell Sheet.B4>: cell.value=10.1 <Cell Sheet.B5>: cell.value=7.7

Probado con Python: 3.4.2 - openpyxl: 2.4.1 - LibreOffice: 4.3.3.2

over 4 years ago · Santiago Trujillo Denunciar

0

Prueba esto,

 from openpyxl import load_workbook workbook = load_workbook('----------/dataset.xlsx') sheet = workbook.active row_count = sheet.max_row for i in range(row_count): print(sheet.cell(row=i, column=2).value)
over 4 years ago · Santiago Trujillo Denunciar

0

Este código leerá una hoja como si fuera un csv y completará una lista de diccionarios en el result usando la primera fila como títulos de columna.

 from openpyxl import load_workbook result = [] wb = load_workbook(filename=file_name) sheet = wb.active col_count = sheet.max_column column_names = {} for c in range(1, col_count): heading = sheet.cell(row=1, column=c).value if not heading: col_count = c break column_names[c] = heading for r, row_cells in enumerate(sheet.iter_rows(2), 2): row = {} for c in range(1, col_count): value = sheet.cell(row=r, column=c).value if type(value) == datetime: value = value.strftime('%Y-%m-%d') row[column_names[c]] = value result.append(row)
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda