openpyxl 일반 워크북을 사용하여 열의 마지막 행을 찾는 방법은 무엇입니까?
저는 openpyxl을 사용하여 "Default"가 있는 모든 행에 데이터 유효성 검사를 적용하고 있습니다.하지만 그러기 위해서는 몇 개의 줄이 있는지 알아야 합니다.
Itreable Workbook 모드를 사용하는 경우 이를 수행할 수 있는 방법이 있다는 것을 알고 있지만, 새 시트를 Workbook에 추가하고 Itreable 모드에서는 불가능합니다.
ws.max_row
워크시트의 행 수가 표시됩니다.
openpyxl 2.4 버전부터는 개별 행과 열에도 액세스할 수 있으며 해당 길이를 사용하여 질문에 답변할 수 있습니다.
len(ws['A'])
단일 열에 대한 데이터 검증을 위해 Excel이 사용하는 것을 사용합니다.1:1048576
.
이것은 저에게 잘 맞습니다.각 열에 비어 있지 않은 행의 수가 표시됩니다. 즉, 각 열 사이에 빈 행이 없다고 가정합니다.
from openpyxl import load_workbook as lw
from openpyxl.utils import get_column_letter
wb = lw(your_xlsx_file)
ws = wb[sheet_name]
for col in range(1, ws.max_column + 1):
col_letter = get_column_letter(col)
max_col_row = len([cell for cell in ws[col_letter] if cell.value])
print("Column: {}, Row numbers: {}".format(col_letter, max_col_row)
여기 도움이 될 수 있는 다른 솔루션이 있습니다 - openpyxl 함수 max_row 및 max_column은 스타일이 적용된 빈 셀도 고려하기 때문에, 저는 그런 경우에 판다를 사용하는 것이 더 낫다고 생각합니다.
import pandas as pd
def get_max_row_column(df, sheet_name):
max_row = 1
max_col = 1
for sh_name, sh_content in df.items():
if sh_name == sheet_name:
max_row = len(sh_content) + 1
max_col = len(sh_content.columns)
break
coordinates = {'max_row': max_row, 'max_col': max_col}
return coordinates
df = pd.read_excel('xls_path', sheet_name=None)
max_row = get_max_row_column(df, 'Test_sheet')['max_row']
max_col = get_max_row_column(df, 'Test_sheet')['max_col']
sheet_name=Discovery를 제공함으로써 모든 워크시트의 사전을 만듭니다. 여기서 키는 시트 이름과 가치 시트 내용(판다 데이터 프레임 사실상)입니다.
행의 길이와 열의 길이를 찾습니다.
열:
column=sheet['A']
output tuple-->(A1,A2,A3........An)
len(column)
output length--> 18
행 길이:
for i in sheet.iter_rows(max_row=0):
print(len(i))
break
피쳐 이름을 입력하는 헤더 행의 길이가 표시됩니다.모든 행 길이를 가져오려면 max_row=len(열)을 추가하고 브레이크를 제거합니다.
언급URL : https://stackoverflow.com/questions/33541692/how-to-find-the-last-row-in-a-column-using-openpyxl-normal-workbook
'programing' 카테고리의 다른 글
git stash pop과 git stash 적용 간의 차이 (0) | 2023.05.07 |
---|---|
VB에서 동사 문자열 리터럴을 수행하는 방법.NET? (0) | 2023.05.07 |
하위 경로에서 상위 경로로 이동하려면 어떻게 해야 합니까? (0) | 2023.05.07 |
Postgres: bash 스크립트에서 다시 생성/재채우기 전에 전체 데이터베이스 지우기 (0) | 2023.05.07 |
Xcode 6/7/8에서 디버그 빌드와 릴리스 빌드를 전환하려면 어떻게 해야 합니까? (0) | 2023.05.07 |