📜  openpyxl 获取最后一个非空行 (1)

📅  最后修改于: 2023-12-03 15:03:23.042000             🧑  作者: Mango

使用 Openpyxl 获取最后一个非空行

如果你需要在 Python 中处理 Excel 文件,Openpyxl 是一个不错的选择。本文将介绍如何使用 Openpyxl 获取 Excel 表格中最后一个非空行。

安装

首先,需要在终端中使用 pip 安装 Openpyxl 模块:

pip install openpyxl
读取 Excel 文件

在代码中导入 openpyxl 模块,使用 load_workbook 方法读取 Excel 文件。该方法将返回一个 Workbook 对象,表示整个 Excel 文件:

from openpyxl import load_workbook

workbook = load_workbook('example.xlsx')
获取工作表

使用 workbook.active 获取默认的工作表。如果需要操作其他工作表,则可以使用工作表名称或整数索引获取指定的工作表:

# 获取名称为 Sheet1 的工作表
worksheet = workbook['Sheet1']

# 获取第一个工作表
worksheet = workbook.worksheets[0]
获取最后一行

使用 worksheet.max_row 获取工作表的最大行数。但这并不是最后一个非空行,因为最后几行可能为空。可以使用 ws.iter_rows 方法迭代行,检查每行中是否包含至少一个非空单元格:

from openpyxl.utils import range_boundaries
from openpyxl.cell.cell import Cell

def get_last_row(worksheet):
    for row in reversed(list(worksheet.iter_rows(min_row=1, max_row=worksheet.max_row))):
        for cell in row:
            if isinstance(cell, Cell) and cell.value is not None:
                return range_boundaries(row)[1]

此函数将从最后一行向上迭代,直到找到包含非空单元格的第一行。

完整代码
from openpyxl import load_workbook
from openpyxl.utils import range_boundaries
from openpyxl.cell.cell import Cell

def get_last_row(worksheet):
    for row in reversed(list(worksheet.iter_rows(min_row=1, max_row=worksheet.max_row))):
        for cell in row:
            if isinstance(cell, Cell) and cell.value is not None:
                return range_boundaries(row)[1]

workbook = load_workbook('example.xlsx')
worksheet = workbook.active

last_row = get_last_row(worksheet)
print(f'The last non-empty row is {last_row}.')

这应该返回 Excel 表格中最后一个非空行的行号。

总结

在 Python 中使用 Openpyxl 获取 Excel 表格中最后一个非空行可以使用 ws.iter_rows 方法迭代行和单元格,检查是否包含非空单元格。在找到包含非空单元格的第一行后,可以使用 Openpyxl 的 range_boundaries 函数获取该行的行号。

完整代码: https://gist.github.com/luojianzhang/ef1a65a75ae0598f6515a5c5eaf88cf2