You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用win32com获取已打开Excel工作簿的最后一行?

解决方法

你用的是win32com调用Excel的COM对象,和openpyxl/pandas的对象模型完全不同,所以sheet.max_row这类方法不适用,得用Excel原生的VBA逻辑来获取最后一行:

方法1:通过UsedRange获取已使用区域的最后一行

如果工作表数据是连续的(无大面积空白行),可以用UsedRange属性获取所有包含数据或格式的单元格区域,再取其总行数:

# 获取已使用区域的最后一行行号
last_row = sheet.UsedRange.Rows.Count
# 构建从A4到G列最后一行的复制范围
copyrange = sheet.Range(f'A4:G{last_row}')
copyrange.CopyPicture(Appearance=1, Format=2)

方法2:指定列向上查找最后非空单元格(更精准)

如果工作表存在空白行,或者想针对某一列(比如G列)定位最后一行,用Range.End模拟Excel里的Ctrl+Up操作:

# xlUp的常量值为-4162,win32com未预定义该常量,直接用数值替代
last_row = sheet.Range("G" & excel.Rows.Count).End(-4162).Row
# 动态生成复制范围
copyrange = sheet.Range(f'A4:G{last_row}')
copyrange.CopyPicture(Appearance=1, Format=2)

补充说明

  • 若想基于其他列判断最后一行,把代码里的"G"改成对应列标识即可(比如"A")
  • CopyPicture参数:Appearance=1对应按打印效果复制,Format=2对应位图格式;若需矢量图,可将Format改为1(对应xlPicture)

内容的提问来源于stack exchange,提问作者CptLuna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 11:50:22