使用openpyxl获取Excel最后一行时要注意的事项

您所在的位置:网站首页 python获取文件最后一行 使用openpyxl获取Excel最后一行时要注意的事项

使用openpyxl获取Excel最后一行时要注意的事项

2024-07-08 12:29| 来源: 网络整理| 查看: 265

介绍

当使用 openpyxl 从 Python 脚本处理 Excel 时,偶然发现了“获取最后一行”另有玄机,所以写下以作记录。

操作环境 Python 3.12.0openpyxl 3.1.2

openpyxl 可以使用 pip 安装。

pip install openpyxl 获取最后一行的代码

一般获取最后一行的源代码:

import openpyxl as px # Excelファイルの指定 inputFile = r"C:\test.xlsx" # 打开指定的Excel wb = px.load_workbook(inputFile) # 选择打开的 Excel 文件的最左边的工作表 ws = wb.worksheets[0] # 获取最大行数 max = ws.max_row

openpyxl的worksheet.max_row属性获取最大行数。 在下面的示例中,返回“9”。 在这里插入图片描述但后来发现这里有个bug。

实际上,如果设置了格式,即使单元格中没有值,此 max_row (获取最后一行)也会将该单元格识别为最后一行。

让我们尝试更改 A10 的格式。 这次,我们将字符控件更改为“自动换行”。 在这里插入图片描述如果更新设置并重新运行上述代码,max 将返回 10。 当创建新的Book时,这种现象不太可能发生,但是在处理现有文件时需要小心。

一些格式的更改像是“更改字体(大小、字体)”和“用白色填充单元格(旨在透明)”。 因为很多人都接触过,不知道共享文件被改了什么…

对策

在获取最后一行后,用一种简单粗暴的技巧:单元格递减并检查值是否已设置。 下面是源代码。

import openpyxl as px # 指定 Excel 文件 inputFile = r"C:\test.xlsx" # 打开指定的Excel wb = px.load_workbook(inputFile) # 选择打开的 Excel 文件的最左边的工作表 ws = wb.worksheets[0] # 获取最大行数 max = ws.max_row # 检查最后一行是否有值 while True: if ws.cell(row=max, column=1).value == None: max -= 1 else: break 综上所述

这不仅适用于 max_row,也适用于 max_column,因此在获取最终矩阵时要小心。 (现在想想,好像VBA也有类似的规范……?)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3