跳到主要内容
Office Open

XLSX

数据透视表

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

#基本透视表

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

JSON
{
  "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": [
        {
          "mode": "source",
          "source": "A1:C7",
          "sourceSheet": "Data",
          "location": "A3",
          "rows": ["Region"],
          "data": [{ "field": "Sales", "summarize": "sum" }]
        }
      ]
    }
  ]
}

#聚合函数

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

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

#多个数据字段

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

JSON
{
  "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 枚举指定筛选类型:

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

pivotTables: [
  {
    mode: "source",
    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_EQUAL、CAPTION_NOT_EQUAL、CAPTION_BEGINS_WITH、CAPTION_NOT_BEGINS_WITH、CAPTION_ENDS_WITH、CAPTION_NOT_ENDS_WITH、CAPTION_CONTAINS、CAPTION_NOT_CONTAINS、CAPTION_GREATER_THAN、CAPTION_GREATER_THAN_OR_EQUAL、CAPTION_LESS_THAN、CAPTION_LESS_THAN_OR_EQUAL、CAPTION_BETWEEN、CAPTION_NOT_BETWEEN
数值VALUE_EQUAL、VALUE_NOT_EQUAL、VALUE_GREATER_THAN、VALUE_GREATER_THAN_OR_EQUAL、VALUE_LESS_THAN、VALUE_LESS_THAN_OR_EQUAL、VALUE_BETWEEN、VALUE_NOT_BETWEEN
日期DATE_EQUAL、DATE_NOT_EQUAL、DATE_OLDER_THAN、DATE_OLDER_THAN_OR_EQUAL、DATE_NEWER_THAN、DATE_NEWER_THAN_OR_EQUAL、DATE_BETWEEN、DATE_NOT_BETWEEN
相对TOMORROW、TODAY、YESTERDAY、NEXT_WEEK、THIS_WEEK、LAST_WEEK、NEXT_MONTH、THIS_MONTH、LAST_MONTH、NEXT_QUARTER、THIS_QUARTER、LAST_QUARTER、NEXT_YEAR、THIS_YEAR、LAST_YEAR、YEAR_TO_DATE
季度Q1、Q2、Q3、Q4
月份M1 至 M12
其他UNKNOWN、COUNT、PERCENT、SUM

#条件格式

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

json
{
  "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 添加报表筛选字段,显示在透视表上方:

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

#列字段

添加 columns 创建交叉分析表:

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

#透视层级

使用 pivotHierarchies 控制字段行为:

json
{
  "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自定义序列排序