XLSX

数据透视表

基于源数据创建数据透视表,支持 11 种聚合函数

基本透视表

从源工作表的数据区域创建透视表,按行字段分组并聚合数据:

{
  "worksheets": [
    {
      "name": "Data",
      "rows": [
        { "cells": [{ "value": "Region" }, { "value": "Product" }, { "value": "Sales" }] },
        { "cells": [{ "value": "East" }, { "value": "Widget" }, { "value": 150 }] },
        { "cells": [{ "value": "East" }, { "value": "Gadget" }, { "value": 200 }] },
        { "cells": [{ "value": "West" }, { "value": "Widget" }, { "value": 300 }] },
        { "cells": [{ "value": "West" }, { "value": "Gadget" }, { "value": 100 }] },
        { "cells": [{ "value": "North" }, { "value": "Widget" }, { "value": 250 }] },
        { "cells": [{ "value": "North" }, { "value": "Gadget" }, { "value": 175 }] }
      ]
    },
    {
      "name": "Pivot",
      "rows": [],
      "pivotTables": [
        {
          "source": "A1:C7",
          "sourceSheet": "Data",
          "location": "A3",
          "rows": ["Region"],
          "data": [{ "field": "Sales", "summarize": "sum" }]
        }
      ]
    }
  ]
}

聚合函数

支持 OOXML ST_DataConsolidateFunction 定义的全部 11 种聚合类型:

函数summarize说明
求和"sum"数值总和(默认)
平均值"average"算术平均值
计数"count"非空值数量
数值计数"countNums"数值数量
最大值"max"最大值
最小值"min"最小值
乘积"product"所有值的乘积
样本标准差"stdDev"STDEV.S
总体标准差"stdDevp"STDEV.P
样本方差"var"VAR.S
总体方差"varp"VAR.P

多个数据字段

在同一透视表中添加多个聚合:

{
  "pivotTables": [
    {
      "source": "A1:C7",
      "sourceSheet": "Data",
      "location": "A3",
      "rows": ["Region"],
      "data": [
        { "field": "Sales", "summarize": "sum", "name": "Total Sales" },
        { "field": "Sales", "summarize": "average", "name": "Avg Sales" }
      ]
    }
  ]
}

筛选器

使用透视筛选器来限制透视表中显示的数据。使用 PivotFilterTypeValue 枚举指定筛选类型:

import { PivotFilterTypeValue } from "@office-open/xlsx";

pivotTables: [
  {
    source: "A1:C9",
    sourceSheet: "Data",
    location: "A3",
    rows: ["City"],
    data: [{ field: "Revenue", summarize: "sum" }],
    filters: [
      {
        fld: 0,
        type: PivotFilterTypeValue.CAPTION_NOT_EQUAL,
        id: 1,
        stringValue1: "Guangzhou",
        name: "ExcludeGuangzhou",
      },
    ],
  },
],

PivotFilter 选项

选项类型说明
fldnumber要筛选的字段索引(必填)
typestring筛选类型,来自 PivotFilterTypeValue(必填)
idnumber透视表内唯一筛选器 ID(必填)
namestring筛选器名称
descriptionstring筛选器描述
stringValue1string标题/日期筛选的第一个值
stringValue2string区间筛选的第二个值
mpFldnumberOLAP 筛选的度量字段索引
evalOrdernumber评估顺序
iMeasureHiernumber度量层级
iMeasureFldnumber度量字段

可用筛选类型(PivotFilterTypeValue

类别
标题CAPTION_EQUALCAPTION_NOT_EQUALCAPTION_BEGINS_WITHCAPTION_NOT_BEGINS_WITHCAPTION_ENDS_WITHCAPTION_NOT_ENDS_WITHCAPTION_CONTAINSCAPTION_NOT_CONTAINSCAPTION_GREATER_THANCAPTION_GREATER_THAN_OR_EQUALCAPTION_LESS_THANCAPTION_LESS_THAN_OR_EQUALCAPTION_BETWEENCAPTION_NOT_BETWEEN
数值VALUE_EQUALVALUE_NOT_EQUALVALUE_GREATER_THANVALUE_GREATER_THAN_OR_EQUALVALUE_LESS_THANVALUE_LESS_THAN_OR_EQUALVALUE_BETWEENVALUE_NOT_BETWEEN
日期DATE_EQUALDATE_NOT_EQUALDATE_OLDER_THANDATE_OLDER_THAN_OR_EQUALDATE_NEWER_THANDATE_NEWER_THAN_OR_EQUALDATE_BETWEENDATE_NOT_BETWEEN
相对TOMORROWTODAYYESTERDAYNEXT_WEEKTHIS_WEEKLAST_WEEKNEXT_MONTHTHIS_MONTHLAST_MONTHNEXT_QUARTERTHIS_QUARTERLAST_QUARTERNEXT_YEARTHIS_YEARLAST_YEARYEAR_TO_DATE
季度Q1Q2Q3Q4
月份M1M12
其他UNKNOWNCOUNTPERCENTSUM

条件格式

为透视表区域应用条件格式规则:

pivotTables: [
  {
    source: "A1:C9",
    sourceSheet: "Data",
    location: "A3",
    rows: ["City"],
    columns: ["Category"],
    data: [
      {
        field: "Revenue",
        summarize: "sum",
        name: "Total Revenue",
        sortByTupleItems: [0],
      },
    ],
    pivotConditionalFormats: [
      {
        priority: 1,
        scope: "data",
        type: "all",
        pivotAreas: [
          {
            field: 2,
            type: "data",
            outline: true,
          },
        ],
      },
    ],
  },
],

高级功能

页面/报表筛选

使用 pages 添加报表筛选字段,显示在透视表上方:

pivotTables: [
  {
    source: "A1:D11",
    sourceSheet: "Data",
    location: "A3",
    rows: ["Region"],
    data: [{ field: "Sales", summarize: "sum" }],
    pages: ["Product"],
  },
],

列字段

添加 columns 创建交叉分析表:

pivotTables: [
  {
    source: "A1:C9",
    sourceSheet: "Data",
    location: "A3",
    rows: ["City"],
    columns: ["Category"],
    data: [{ field: "Revenue", summarize: "sum" }],
  },
],

透视层级

使用 pivotHierarchies 控制字段行为:

pivotTables: [
  {
    source: "A1:C9",
    sourceSheet: "Data",
    location: "A3",
    rows: ["City"],
    data: [{ field: "Revenue", summarize: "sum" }],
    pivotHierarchies: [
      {
        outline: true,
        dragToRow: true,
        dragToCol: true,
        showInFieldList: true,
        caption: "City",
      },
    ],
  },
],

透视表选项参考

选项类型说明
sourcestring源数据区域,如 "A1:C11"
sourceSheetstring源工作表名称(默认:当前工作表)
locationstring输出起始单元格(默认:"A3"
rowsstring[]行字段名称
columnsstring[]列字段名称
dataDataField[]数据字段配置
pagesstring[]页面/报表筛选字段名称
namestring透视表名称(默认:"PivotTable1"
stylestring透视表样式名(默认:"PivotStyleLight16"
filtersPivotFilterOptions[]透视筛选器
pivotConditionalFormatsPivotConditionalFormat[]透视区域条件格式规则
pivotHierarchiesPivotHierarchyOptions[]透视层级配置
calculatedItemsCalculatedItemOptions[]计算项
calculatedMembersCalculatedMemberOptions[]计算成员(MDX)
chartFormatsChartFormatOptions[]图表格式关联
formatsPivotFormatOptions[]透视格式区域
autoSortScopePivotAreaOptions自动排序范围定义
memberPropertiesMemberPropertyOptions[]每字段的成员属性
rowHierarchiesUsageHierarchyUsageOptions[]行层级使用情况
colHierarchiesUsageHierarchyUsageOptions[]列层级使用情况
dataOnRowsboolean数据字段显示在行而非列
grandTotalCaptionstring总计标题文本
errorCaptionstring错误标题文本
showErrorboolean显示错误信息
missingCaptionstring缺失标题文本
showMissingboolean显示缺失项
pageStylestring页面样式名称
pivotTableStylestring自定义透视表样式名称
tagstring标签字符串
showItemsboolean显示无数据的项目
editDataboolean原地编辑数据
disableFieldListboolean禁用字段列表
showCalcMbrsboolean显示计算成员
visualTotalsboolean视觉总计
showMultipleLabelboolean显示多个标签
showDataDropDownboolean显示数据下拉菜单
showDrillboolean显示展开/折叠指示器
printDrillboolean打印展开/折叠指示器
showMemberPropertyTipsboolean显示成员属性提示
showDataTipsboolean显示数据提示
enableWizardboolean启用布局向导
enableDrillboolean启用向下钻取
enableFieldPropertiesboolean启用字段属性
pageWrapnumber每行/列的页字段数
pageOverThenDownboolean页面布局先横向后纵向
subtotalHiddenItemsboolean对隐藏项分类汇总
fieldPrintTitlesboolean字段打印标题
mergeItemboolean合并项目标签
showDropZonesboolean显示拖放区域
showEmptyRowboolean显示空行
showEmptyColboolean显示空列
showHeadersboolean显示标题
publishedboolean发布到服务器
gridDropZonesboolean网格拖放区域
multipleFieldFiltersboolean多字段筛选
rowHeaderCaptionstring行标题
colHeaderCaptionstring列标题
fieldListSortAscendingboolean字段列表升序排序
mdxSubqueriesboolean启用 MDX 子查询
customListSortboolean自定义序列排序
Copyright © 2026