使用openpyxl获取Excel最后一行时要注意的事项 |
您所在的位置:网站首页 › python获取文件最后一行 › 使用openpyxl获取Excel最后一行时要注意的事项 |
介绍
当使用 openpyxl 从 Python 脚本处理 Excel 时,偶然发现了“获取最后一行”另有玄机,所以写下以作记录。 操作环境 Python 3.12.0openpyxl 3.1.2openpyxl 可以使用 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_rowopenpyxl的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 |