Iterar sobre hojas de cálculo, 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 la fila <1 o la columna <1: TypeError: tipos no ordenados: tuple () <int ()

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

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 

Lea la documentación de OpenPyXL

Iteración de todas las worksheets de worksheets en un workbook , 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 de 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.value=²234 : cell.value=12.5 : cell.value=C1 : cell.value=D1 : cell.value=1234 : cell.value=8.2 : cell.value=C2 : 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.value=1234 : cell.value=8.2 : cell.value=C2 : 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.value=12.5 : cell.value=8.2 : cell.value=9.8 : cell.value=10.1 : cell.value=7.7 

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

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)