excel 如何使用openpyxl普通工作簿查找列中的最后一行?

gorkyyrv  于 2023-05-01  发布在  其他
关注(0)|答案(5)|浏览(450)

我使用openpyxl对所有包含“Default”的行进行数据验证。但要做到这一点,我需要知道有多少行。
我知道如果我使用可迭代工作簿模式,有一种方法可以做到这一点,但我也向工作簿添加了一个新工作表,而在可迭代模式下这是不可能的。

xdnvmnnf

xdnvmnnf1#

ws.max_row将给予工作表中的行数。
从openpyxl 2版本开始。4您还可以访问单独的行和列,并使用它们的长度来回答问题。
len(ws['A'])
但值得注意的是,对于单列的数据验证,Excel使用1:1048576

rxztt3cl

rxztt3cl2#

这对我很有效。它给出了每列中非空行的数量,假设它们之间没有空行。

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)
xnifntxz

xnifntxz3#

这里是另一个可能有用的解决方案-因为openpyxl函数max_row和max_column也考虑了空单元格的样式,我认为在这种情况下使用pandas更好:

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=None,我创建了所有工作表的字典,其中key是表名和值表内容(实际上是pandas DataFrame)。

ef1yzkbh

ef1yzkbh4#

求行长和列长。
色谱柱:

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(column)并删除break。

ozxc1zmp

ozxc1zmp5#

**注意:**此方法假设您使用的列在值之间没有空白单元格

| A       | B      | C     |
|:--------|:-------|:------|
| 10R46   | 1005   | 8017  |
| 10R46   | 10335  | 5019  |
| 100R91  | 1005   | 8017  | 
| 10R91   | 243    | 8870  | 
| 10M95   | 4918   | 8305  |
| 10M95   | 9017   | 8305  |
|         | 9470   | 8221  |

将其加载到pandas数据框中并计算非空值的数量。

import pandas as pd

df_split_file = pd.read_excel('testfile.xlsx', sheet_name='sheet1')
last_row = df_split_file['A'].count() + 1

print(len(last_row))

last_row的结果:

6

相关问题