python Excel取出已使用的行数

python+xlwings:获取最大行数不是想要的行数。实际有效值行数值有20行,获取行数为40.
原因在于获取最大行数时,空行被设置了格式,导致也被计算了进来。
请问有没有什么办法能避过空行值?

可以使用xlwings的used_range属性来获取实际有效值所在的范围,然后再获取该范围的最大行数。示例代码如下:

import xlwings as xw

# 打开Excel文件
wb = xw.Book('example.xlsx')
# 获取第一个Sheet
sheet = wb.sheets[0]

# 获取实际有效值所在的范围
used_range = sheet.used_range
# 获取该范围的最大行数
max_row = used_range.last_cell.row

print(max_row)

这样就可以避免空行被计算在内的问题。

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7637350
  • 这篇博客你也可以参考下:补充python操作excel示例xlwings常用函数
  • 除此之外, 这篇博客: python-excel处理(xlwings模块的使用)中的 5.1 单元格引用 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • import xlwings as xw
    rng = xw.books['工作簿名称'].sheets['工作表名称'].range('a1')
    # 第一个应用第一个工作簿第一张sheet的第一个单元格
    xw.apps[0].books[0].sheets[0].range('a1')
    xw.apps[0].books[0].sheets[0].range(1,1)	# 使用row+column定位,坐标从1开始
    
    # 引用活动sheet的单元格,直接接xw,Range首字母大写
    rng = xw.Range('a1')	# a1
    rng = xw.Range(1,1)  # a1,行列用tuple进行引用,圆括号从1开始
    rng = xw.Range((1,1),(3,3))	# a1:a3
    
    # 也可以工作表对象接方括号引用单元格
    sheet = xw.books['工作簿'].sheets['工作表名称']
    rng = sheet['a1']	# a1单元格
    rng = sheet['a1:b5']	# a1:b5单元格
    rng = sheet[0,1]  # b1单元格,也可以根据行列索引,从0开始为
    rng = sheet[:10,:10]  # a1:j10
    # 单元格邻近范围
    rng = sheet[0,0].current_region	#a1单元格邻近区域=vba:currentregion
    
    # 返回excel:ctrl键+方向键跳转单元格对象:上:up,下:down,左:left,右:right
    # 等同于vba:end语法:xlup,xldown,xltoleft,xltoright
    rng = sheet[0,0].end('down')
    
  • 您还可以看一下 小明老师的python自动化办公课程课程中的 python自动化办公之xlwings,让Excel飞起来小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    我可以通过xlwings的特殊功能UsedRange来获取到Excel表格中实际使用的行数。

    具体步骤如下:

    1. 使用xlwings打开Excel文件并找到指定的表格sheet。

    2. 使用UsedRange方法获取到表格的实际使用范围,即包含数据的范围。例如,可以使用以下代码获取到第一列实际使用的行数:

    ```python import xlwings as xw

    wb = xw.Book('example.xlsx') # 打开Excel文件 sheet = wb.sheets['Sheet1'] # 找到指定的表格sheet used_range = sheet.used_range # 获取实际使用范围 row_count = used_range.last_cell.row # 获取实际使用的行数 ```

    上述代码中的used_range是一个Range对象,可以通过.last_cell属性获取到该范围的最后一个单元格。

    1. 如果需要获取多个列的实际使用行数,可以使用for循环遍历每一列并分别获取实际使用的行数。例如,以下代码可以同时获取第一列和第二列的实际使用行数:

    ```python import xlwings as xw

    wb = xw.Book('example.xlsx') # 打开Excel文件 sheet = wb.sheets['Sheet1'] # 找到指定的表格sheet used_range = sheet.used_range # 获取实际使用范围 row_counts = [] for column in ["A", "B"]: # 遍历A列和B列 last_row = sheet.range(column + str(used_range.last_cell.row)).end('up').row # 寻找最后一个非空单元格 row_counts.append(last_row) # 将实际使用的行数添加到列表中 ```

    上述代码中,使用了.range方法获取到每一列实际使用的范围,并使用.end方法找到每一列最后一个非空单元格,再通过.row属性获取该单元格所在的行号。将两列的实际使用行数存储在一个列表中。

    注意,因为有空单元格的存在,直接使用last_cell属性可能无法获取到预期结果。因此可以使用.end('up')方法寻找最后一个非空单元格。

    通过上述方法,我们可以避免空白行对表格操作的影响,获取到Excel表格中实际使用的行数。