logo

S2

  • 使用文档
  • API 文档
  • 图表示例
  • 在线体验
  • 更新日志
  • 所有产品antv logo arrow
  • 2.x
  • 简介
  • 快速上手
  • 基础教程
    • 基本概念
      Updated
    • 表形态
      • 透视表
        Updated
      • 明细表
        Updated
    • 字段标记
      Updated
    • 小计总计
    • 排序
      • 基础排序
        Updated
      • 组内排序
        Updated
    • 主题配置
      Updated
    • Tooltip
      Updated
    • 数据格式化
      New
    • 多行文本
      New
    • 国际化
    • 分页
      New
  • 进阶教程
    • 单元格渲染类型
      • 链接
      • 图片
        New
      • 视频
        New
      • 迷你图表
      • 结合@antv/g2
      • 自定义渲染
    • 自定义
      • 自定义 Hook
        Updated
      • 自定义行列头分组
        New
      • 自定义 Icon
        Updated
      • 自定义单元格对齐方式
        Updated
      • 自定义单元格宽高
        Updated
      • 自定义排序操作
        Updated
      • 自定义折叠/展开节点
        New
    • 交互
      • 基础交互
        Updated
      • 自定义交互
      • 隐藏列头
        Updated
      • 行列宽高调整
        Updated
      • 合并单元格
      • 滚动
        Updated
      • 复制与导出
        New
      • 高亮/选中单元格
        New
    • 分析组件
      • 简介
        New
      • 高级排序
        Updated
      • 维度切换
        Updated
      • 导出
        Updated
      • 分页
        Updated
      • 维度下钻
        Updated
    • 表格组件
      • 编辑表
      • 趋势分析表
        Updated
    • 高清适配
      Updated
    • 获取表格实例
    • 表格自适应
    • 获取单元格数据
      Updated
    • 注册 AntV/G 插件
      New
    • 透视组合图
      Experimental
    • Vue 3.0 组件 (停止维护)
  • 扩展阅读
    • 数据流处理
      • 透视表
      • 明细表
    • 布局流程
      • 透视表
      • 明细表
    • 性能介绍
      Updated
  • 贡献指南
  • 常见问题
  • S2 2.0 升级指南

合并单元格

上一篇
行列宽高调整
下一篇
滚动

Resources

Ant Design
Galacea Effects
Umi-React 应用开发框架
Dumi-组件/文档研发工具
ahooks-React Hooks 库

社区

体验科技专栏
seeconfSEE Conf-蚂蚁体验科技大会

帮助

GitHub
StackOverflow

more products更多产品

Ant DesignAnt Design-企业级 UI 设计语言
yuque语雀-知识创作与分享工具
EggEgg-企业级 Node 开发框架
kitchenKitchen-Sketch 工具集
GalaceanGalacean-互动图形解决方案
xtech蚂蚁体验科技
© Copyright 2025 Ant Group Co., Ltd..备案号:京ICP备15032932号-38

Loading...

在表格中将两个或多个连续的单元格合并为一个单元格。用户可根据业务要求,在看数或展示时实现分类分析。

mergeCellGif

快速上手

点击查看数据
{
"meta": [
{
"field": "number",
"name": "数量"
},
{
"field": "province",
"name": "省份"
},
{
"field": "city",
"name": "城市"
},
{
"field": "type",
"name": "类别"
},
{
"field": "sub_type",
"name": "子类别"
}
],
"data": [
{
"number": 7789,
"province": "浙江省",
"city": "杭州市",
"type": "家具",
"sub_type": "桌子"
},
{
"number": 2367,
"province": "浙江省",
"city": "绍兴市",
"type": "家具",
"sub_type": "桌子"
},
{
"number": 3877,
"province": "浙江省",
"city": "宁波市",
"type": "家具",
"sub_type": "桌子"
},
{
"number": 4342,
"province": "浙江省",
"city": "舟山市",
"type": "家具",
"sub_type": "桌子"
},
{
"number": 5343,
"province": "浙江省",
"city": "杭州市",
"type": "家具",
"sub_type": "沙发"
},
{
"number": 632,
"province": "浙江省",
"city": "绍兴市",
"type": "家具",
"sub_type": "沙发"
},
{
"number": 7234,
"province": "浙江省",
"city": "宁波市",
"type": "家具",
"sub_type": "沙发"
},
{
"number": 834,
"province": "浙江省",
"city": "舟山市",
"type": "家具",
"sub_type": "沙发"
},
{
"number": 945,
"province": "浙江省",
"city": "杭州市",
"type": "办公用品",
"sub_type": "笔"
},
{
"number": 1304,
"province": "浙江省",
"city": "绍兴市",
"type": "办公用品",
"sub_type": "笔"
},
{
"number": 1145,
"province": "浙江省",
"city": "宁波市",
"type": "办公用品",
"sub_type": "笔"
},
{
"number": 1432,
"province": "浙江省",
"city": "舟山市",
"type": "办公用品",
"sub_type": "笔"
},
{
"number": 1343,
"province": "浙江省",
"city": "杭州市",
"type": "办公用品",
"sub_type": "纸张"
},
{
"number": 1354,
"province": "浙江省",
"city": "绍兴市",
"type": "办公用品",
"sub_type": "纸张"
},
{
"number": 1523,
"province": "浙江省",
"city": "宁波市",
"type": "办公用品",
"sub_type": "纸张"
},
{
"number": 1634,
"province": "浙江省",
"city": "舟山市",
"type": "办公用品",
"sub_type": "纸张"
},
{
"number": 1723,
"province": "四川省",
"city": "成都市",
"type": "家具",
"sub_type": "桌子"
},
{
"number": 1822,
"province": "四川省",
"city": "绵阳市",
"type": "家具",
"sub_type": "桌子"
},
{
"number": 1943,
"province": "四川省",
"city": "南充市",
"type": "家具",
"sub_type": "桌子"
},
{
"number": 2330,
"province": "四川省",
"city": "乐山市",
"type": "家具",
"sub_type": "桌子"
},
{
"number": 2451,
"province": "四川省",
"city": "成都市",
"type": "家具",
"sub_type": "沙发"
},
{
"number": 2244,
"province": "四川省",
"city": "绵阳市",
"type": "家具",
"sub_type": "沙发"
},
{
"number": 2333,
"province": "四川省",
"city": "南充市",
"type": "家具",
"sub_type": "沙发"
},
{
"number": 2445,
"province": "四川省",
"city": "乐山市",
"type": "家具",
"sub_type": "沙发"
},
{
"number": 2335,
"province": "四川省",
"city": "成都市",
"type": "办公用品",
"sub_type": "笔"
},
{
"number": 245,
"province": "四川省",
"city": "绵阳市",
"type": "办公用品",
"sub_type": "笔"
},
{
"number": 2457,
"province": "四川省",
"city": "南充市",
"type": "办公用品",
"sub_type": "笔"
},
{
"number": 2458,
"province": "四川省",
"city": "乐山市",
"type": "办公用品",
"sub_type": "笔"
},
{
"number": 4004,
"province": "四川省",
"city": "成都市",
"type": "办公用品",
"sub_type": "纸张"
},
{
"number": 3077,
"province": "四川省",
"city": "绵阳市",
"type": "办公用品",
"sub_type": "纸张"
},
{
"number": 3551,
"province": "四川省",
"city": "南充市",
"type": "办公用品",
"sub_type": "纸张"
},
{
"number": 352,
"province": "四川省",
"city": "乐山市",
"type": "办公用品",
"sub_type": "纸张"
}
]
}
import { S2Event } from '@antv/s2';
const s2DataConfig = {
fields: {
rows: [ 'province', 'city' ],
columns: [ 'type', 'sub_type' ],
values: [ 'number' ],
},
data,
meta
};
const s2Options = {
width: 600,
height: 400,
seriesNumber: {
enable: true
},
tooltip: {
content: TooltipContent,
},
// 表格渲染后,会展示一个合并单元格
mergedCellsInfo: [
[
{ colIndex: 1, rowIndex: 6, showText: true }, // 此单元格的 meta 信息将作为合并单元的 meta 信息
{ colIndex: 1, rowIndex: 7 },
{ colIndex: 2, rowIndex: 6 },
{ colIndex: 2, rowIndex: 7 },
{ colIndex: 3, rowIndex: 6 },
{ colIndex: 3, rowIndex: 7 },
]
]
}
const s2 = new PivotSheet(container, s2DataConfig, s2Options);
// 将单元格合并操作集成到未合并单元格的 tooltip 操作中
const dataCellTooltip = () => {
button.innerText = '点击合并单元格';
button.className = 'merge-cells-button';
button.onclick = () => s2.interaction.mergeCells(); // 不传入 cellsInfo 时,默认使用当前选中所有的单元格信息
return button;
}; // (按住 Cmd/ Ctrl 多选)
// 将取消单元格合并操作集成到合并单元格的 tooltip 操作中
const mergedCellsTooltip = (mergedCell) => {
button.innerText = '取消合并单元格';
button.className = 'merge-cells-button';
button.onclick = () => s2.interaction.unmergeCell(mergedCell);
return button;
};
// 监听 dataCell 的点击事件,自定义点击后的交互操作
s2.on(S2Event.DATA_CELL_CLICK, (event) => {
s2.tooltip.show({
position: { x: event.clientX, y: event.clientY },
content: dataCellTooltip(),
});
});
// 监听 mergedCell 的点击事件,自定义点击后的交互操作
s2.on(S2Event.MERGED_CELLS_CLICK, (event) => {
const cell = s2.getCell(event.target);
s2.tooltip.show({
position: { x: event.clientX, y: event.clientY },
content: mergedCellsTooltip(cell),
});
});
await s2.render();

demo 演示

  • 合并操作:Cmd/Ctrl + 单选操作,选择多个连续单元格通过 tooltip 进行合并
  • 取消合并操作:点击合并单元格,通过 tooltip 取消合并

配置和方法说明

MergedCellInfo

功能描述:设置默认合并的单元格信息

参数说明类型默认值必选
colIndex单元格的列索引number-
rowIndex单元格的行索引number-
showText设置 showText: true 时,则展示当前格子的 meta 信息为合并后单元格的 meta。
默认使用第一个选中点击的单元格。
booelan-

合并单元格

mergeCells

function mergeCells(cellsInfo?: MergedCellInfo[], hideData?: boolean): void

合并单元格方法

参数说明类型默认值必选
cellsInfo指定一个合并单元格的信息,未传则默认使用当前选中所有的单元格信息MergedCellInfo[]-
hideDatahideData 为 true 时,合并单元格不显示内容。booleanfalse

unmergeCells

a function unmergeCell(removedCells: MergedCell): void

取消合并单元格方法

参数说明类型默认值必选
removedCells被取消合并的合并单元格MergedCell-