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

ClosedXML 如何获取数据透视表区域及最后使用行号?

ClosedXML 获取数据透视表最后一行行号的实现方法

你之前尝试的两种方法存在以下问题:

  • mysheet.LastRowUsed().RowNumber()返回的是整个工作表的最后使用行,若透视表外还有其他填充内容,会导致返回结果偏大,无法精准对应透视表本身的范围
  • mypivot.TargetCell.Address.RowNumber仅返回透视表放置的起始单元格行号,和实际占用的最后一行无关

ClosedXML 中对应 Office 对象模型 PivotTable.TableRange2 的属性为 IXLPivotTable.TableRange,该属性会返回包含页筛选区域、行标签、列标签、数据区域在内的整个透视表范围,直接读取该范围的最后一行行号即可,示例代码如下:

// 获取包含完整透视表区域的最后一行行号
int pivotLastRow = mypivot.TableRange.LastRow().RowNumber();

如果你不需要统计顶部的页筛选区域,仅需要获取数据主体区域(对应 Office 对象模型 PivotTable.TableRange1)的最后一行,可以使用DataBodyRange属性:

// 仅获取透视表数据主体部分的最后一行行号
int pivotDataLastRow = mypivot.DataBodyRange.LastRow().RowNumber();

建议增加空判断避免空引用异常,适配透视表无数据的场景:

int GetPivotLastRow(IXLPivotTable pivot)
{
    if (pivot.TableRange != null)
    {
        return pivot.TableRange.LastRow().RowNumber();
    }
    // 空透视表返回起始放置行号
    return pivot.TargetCell.Address.RowNumber;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:24:07