Есть ли способ получить количество строк и столбцов, присутствующих в листе .xlsx, с помощью openpyxl?

Есть ли способ получить количество строк и столбцов, присутствующих в листе .xlsx, с помощью openpyxl? В xlrd,

     sheet.ncols 
     sheet.nrows

даст количество столбцов и строк. Есть ли такой метод в openpyxl?


person Kulkarni Sachin    schedule 15.02.2016    source источник


Ответы (5)


Для переменной sheet определение количества строк и столбцов может быть выполнено одним из следующих двух способов:

Версия ~ = 3.0.5 Синтаксис

rows = sheet.max_rows
columns = sheet.max_column

Версия 1.x.x Синтаксис

rows = sheet.nrows
columns = sheet.ncols

Версия 0.x.x Синтаксис

rows = sheet.max_row
columns = sheet.max_column
person Alexander Craggs    schedule 15.02.2016
comment
Он содержал устаревшую и неточную информацию, поэтому был отредактирован. - person Charlie Clark; 15.02.2016
comment
@virtualxtc это max_row не во множественном числе, вам также нужно проверить, используете ли вы v1 и, следовательно, вам нужны брови? - person Alexander Craggs; 29.06.2018
comment
нет - это была просто глупая ошибка с моей стороны. Спасибо хоть. - person virtualxtc; 29.06.2018
comment
У меня не работает. writer.sheets['Sheet1'] как не max_row и ни nrows - person newandlost; 21.11.2018
comment
Похоже, это для xlrd, а не для openpyxl - person Mark; 28.12.2020

это логика

    number_of_rows = sheet_obj.max_row
    last_row_index_with_data = 0
    
    while True:
        if sheet_obj.cell(number_of_rows, 3).value != None:
            last_row_index_with_data = number_of_rows
            break
        else:
            number_of_rows -= 1

person Dani    schedule 05.11.2020

На листе есть следующие методы: 'dim_colmax', 'dim_colmin', 'dim_rowmax', 'dim_rowmin'

Ниже приведен небольшой пример:

import pandas as pd

writer = pd.ExcelWriter("some_excel.xlsx", engine='xlsxwriter')

workbook  = writer.book
worksheet = writer.sheets[RESULTS_SHEET_NAME]

last_row = worksheet.dim_rowmax
person Andrey Mazur    schedule 26.07.2020

Основываясь на решении Дэни и не имея достаточной репутации, чтобы там комментировать. Я отредактировал код, добавив элемент управления вручную, чтобы сократить время, затрачиваемое на поиск

## iteration to find the last row with values in it
nrows = ws.max_row
if nrows > 1000:
    nrows = 1000

lastrow = 0
while True:
    if ws.cell(nrows, 3).value != None:
        lastrow = nrows
        break
    else:
        nrows -= 1
person AshG    schedule 16.02.2021

Решение с использованием Pandas для получения количества строк и столбцов всех листов. Для подсчета используется df.shape.

import pandas as pd
xl = pd.ExcelFile('file.xlsx')
sheetnames = xl.sheet_names  # get sheetnames
for sheet in sheetnames:
    df = xl.parse(sheet)
    dimensions = df.shape
    print('sheetname', ' --> ', sheet)
    print(f'row count on "{sheet}" is {dimensions[0]}')
    print(f'column count on "{sheet}" is {dimensions[1]}')
    print('-----------------------------')
person Cam    schedule 21.07.2021