Есть ли способ получить количество строк и столбцов, присутствующих в листе .xlsx, с помощью openpyxl? В xlrd,
sheet.ncols
sheet.nrows
даст количество столбцов и строк. Есть ли такой метод в openpyxl?
Есть ли способ получить количество строк и столбцов, присутствующих в листе .xlsx, с помощью openpyxl? В xlrd,
sheet.ncols
sheet.nrows
даст количество столбцов и строк. Есть ли такой метод в openpyxl?
Для переменной sheet
определение количества строк и столбцов может быть выполнено одним из следующих двух способов:
rows = sheet.max_rows
columns = sheet.max_column
rows = sheet.nrows
columns = sheet.ncols
rows = sheet.max_row
columns = sheet.max_column
writer.sheets['Sheet1']
как не max_row
и ни nrows
- person newandlost; 21.11.2018
это логика
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
На листе есть следующие методы: '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
Основываясь на решении Дэни и не имея достаточной репутации, чтобы там комментировать. Я отредактировал код, добавив элемент управления вручную, чтобы сократить время, затрачиваемое на поиск
## 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
Решение с использованием 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('-----------------------------')