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...

S2 可以手动拖拽动态改变单元格的宽高,同时内置了 行列等宽, 列等宽 和 行列紧凑布局 三种布局 (查看示例)

我们可以通过 主题 修改单元格的背景色,字体大小等配置,如果想自定义单元格的宽高,可以通过 s2Options 的 style 配置来实现


const s2Options = {
style: {
// 行头单元格配置
rowCell: {},
// 列头单元格配置
colCell: {},
// 数值单元格配置
dataCell: {},
},
}

preview

调整数值单元格宽高

注意

优先级: 小于 rowCell.height/rowCell.heightByField 和 colCell.width/colCell.widthByField

const s2Options = {
style: {
dataCell: {
width: 100,
height: 90
},
}
}

行头单元格高度 和列头单元格的宽度 始终和数值单元格一致,所以此时相当于也调整了行头的高度 和 列头的宽度.

preview

调整行头单元格宽高

注意

行头单元格高度调整作用于叶子节点 (非叶子节点的高度是所有子节点高度度总和), 且高度始终和 数值单元格 高度一致。

优先级: rowCell.heightByField > rowCell.height > dataCell.height

const s2Options = {
style: {
rowCell: {
width: 50,
height: 50
},
},
}

还可以根据当前行头节点信息动态调整,返回 null 代表使用默认宽高.

const s2Options = {
style: {
rowCell: {
width: (rowNode) => {
// 例:叶子节点 300px, 非叶子节点 200px
return rowNode.isLeaf ? 300 : 200;
},
height: (rowNode) => {
// 例:偶数行高度 300pox, 奇数行默认高度
return rowNode.level % 2 === 0 ? 300 : null
}
},
},
}
preview

提示

如果想给特定某一行/列设置不同的宽高,可以通过 rowCell 的 widthByField 和 heightByField 预设高度来实现,支持两种类型的配置:

  • fieldId (例:root[&]浙江省[&]杭州市): 行列交叉后每一个行头节点对应的唯一 ID, 适用于宽高精确到具体的单元格 (如何获取 ID)
  • field (例:city): 对应 s2DataConfig.fields.rows 中配置的 field, 适用于精确到某一类维值的单元格

import { EXTRA_FIELD } from '@antv/s2'
const s2Options = {
style: {
rowCell: {
widthByField: {
// 调整维度
city: 100,
// 调整具体单元格
'root[&]浙江省[&]杭州市': 60,
// 数值挂行头时对应的 [数值] 虚拟字段
[EXTRA_FIELD]: 20,
},
heightByField: {
type: 10,
'root[&]浙江省[&]杭州市': 60,
'root[&]浙江省[&]宁波市': 100,
},
},
},
}
preview

调整树状模式下行头宽度

和平铺模式配置无区别

const s2Options = {
hierarchyType: 'tree',
style: {
rowCell: {
width: 200,
}
},
}

调整列头单元格宽高

注意

列头单元格宽度调整作用于叶子节点 (非叶子节点的宽度是所有子节点宽度总和), 且宽度始终和 数值单元格 宽度一致。

优先级: colCell.widthByField > colCell.width > dataCell.width

const s2Options = {
style: {
colCell: {
width: 200,
height: 60,
},
},
}

preview

如果想给每一列设置不同的宽高,可以根据当前列头节点信息动态调整宽高,返回 null 代表使用默认宽高.

const s2Options = {
style: {
colCell: {
width: (colNode) => {
// 例:前两列宽度 100px, 其他 50px
return colNode.colIndex <= 2 ? 100 : 50
},
height: (colNode) => {
// 例:前两列高度 100px, 其他 默认
return colNode.colIndex <= 2 ? 100 : null
},
},
},
}

提示

如果想给特定某一列设置不同的宽高,可以通过 colCell 的 widthByField 和 heightByField 预设宽高来实现,支持两种类型的配置:

  • fieldId (例:root[&]家具[&]沙发[&]number): 行列交叉后每一个列头节点对应的唯一 ID, 适用于宽高精确到具体的单元格 (如何获取 ID)
  • field (例:city): 对应 s2DataConfig.fields.columns 中配置的 field, 适用于精确到某一类维值的单元格
import { EXTRA_FIELD } from '@antv/s2'
const s2Options = {
style: {
colCell: {
widthByField: {
// 默认 [数值挂列头], EXTRA_FIELD 为内部虚拟数值列,对应 [数值] 单元格
[EXTRA_FIELD]: 60,
city: 20,
'root[&]家具[&]沙发[&]number': 120,
},
heightByField: {
[EXTRA_FIELD]: 80,
// 调整维度
city: 20,
// 调整具体单元格
'root[&]家具[&]沙发[&]number': 120,
},
},
},
}
preview

调整明细表行高

提示

明细表有一点特殊,由于只有列头:

  1. 如果想给所有行设置固定的行高,则可以通过 rowCell.height 调整
  2. 如果想给特定行设置不同的行高,则可以通过 rowCell.heightByField 根据行索引调整 (从 0 开始)
  3. 优先级:rowCell.heightByField > rowCell.height > dataCell.height
const s2Options = {
style: {
rowCell: {
// 设置行高
height: 40,
// 给第一行和第三行设置不同的高度
heightByField: {
'0': 130,
'2': 60,
},
},
},
}

查看示例

隐藏列头

还可以将高度设置为 0, 从而实现隐藏列头的效果。

透视表

配置 colCell.height 改变单元格高度从而隐藏全部列头。所需隐藏部分列头请查看 交互-隐藏列头-透视表 相关文档。

const s2Options = {
style: {
colCell: {
height: 0
},
},
}
preview

也支持通过 heightByField 隐藏部分列维度,将高度设置为 0, 列头对应的单元格和所对应的角头都不会渲染。

import { EXTRA_FIELD } from '@antv/s2'
const s2Options = {
style: {
colCell: {
// 隐藏全部列头
height: 0,
heightByField: {
// 隐藏部分维度 (类别/子类别)
// type: 0,
// sub_type: 0,
// EXTRA_FIELD 对应 [数量] 这一虚拟维度列
[EXTRA_FIELD]: 30,
},
},
},
}
preview
查看示例

明细表

配置 colCell.height 改变单元格高度从而隐藏全部列头。所需隐藏部分列头请查看 交互-隐藏列头-明细表 相关文档。

preview
查看示例

分割线

默认列头有一条分割线,隐藏列头如果不需要的话,可以将分割线的透明度设置为 0.

s2.setTheme({
splitLine: {
horizontalBorderColorOpacity: 0,
},
})

API 文档

Style

功能描述:样式设置。查看 文档 和 示例

参数类型必选默认值功能描述
layoutWidthTypeadaptive | colAdaptive | compact单元格宽度布局类型
adaptive : 行列等宽,均分整个 Canvas 画布宽度
colAdaptive:列等宽,行头紧凑布局,列等分画布宽度减去行头宽度的剩余宽度
compact:行列紧凑布局,指标维度少的时候无法布满整个画布,列头宽度为实际内容宽度(取当前列最大值,采样每一列前 50 条数据)
dataCellDataCell数值单元格配置
rowCellRowCell行头单元格配置
colCellColCell列头单元格配置
cornerCellCornerCell角头单元格配置
mergedCellMergedCell合并单元格配置
seriesNumberCellSeriesNumberCell序号单元格配置

DataCell

功能描述:数值单元格配置

参数说明类型默认值必选
width单元格宽度 (优先级:colCell.widthByField > colCell.width > dataCell.width)number96-
height单元格高度 (优先级:rowCell.heightByField > rowCell.height > dataCell.height)number30-
valuesCfg单元格配置{ originalValueField?: string, widthPercent?: number[], showOriginalValue?: boolean }-

其他公用配置见 CellTextWordWrapStyle

ColCell

功能描述:列头单元格配置

参数说明类型默认值必选
width单元格宽度,可根据当前列头节点动态设置 (叶子节点有效)number | (colNode: Node) => number96
height单元格高度,可根据当前列头节点动态设置 (叶子节点有效)number | (colNode: Node) => number30
widthByField根据度量值设置宽度(拖拽或者预设宽度场景), field 对应 s2DataConfig.fields.columns 中的 field 或 列头 id (优先级大于 width) 查看详情Record<string, number>-
heightByField根据度量值设置高度(拖拽或者预设高度场景), field 对应 s2DataConfig.fields.columns 中的 field 或 列头 id (优先级大于 height) 查看详情Record<string, number>-
hideValue默认数值挂列头,会同时显示列头和数值,隐藏数值,使其更美观。(即 s2DataConfig.fields.values 且仅在单数值时有效,多数值时推荐使用 隐藏列头)booleanfalse

RowCell

功能描述:行头单元格配置

参数说明类型默认值必选
width行单元格宽度,可根据当前行头节点动态设置,树状结构同样适用number | (rowNode: Node) => number
treeWidth树状模式下行单元格宽度,优先级高于 width, 值为空时则默认使用 widthnumber
height行单元格高度,可根据当前行头节点动态设置number | (rowNode: Node) => number30
collapseFields树状模式下行头自定义折叠节点。
支持 id ('root[&] 行头维度值') 和 维度 field ('city') 两种格式,优先级大于 collapseAll 和 expandDepth, 设置为 null 时优先级最低。 查看 demo
Record<string, boolean>
collapseAll在树状结构模式下行头是否默认收起全部。booleanfalse
expandDepth在树状结构模式下行头默认展开展开的层级(层级从 0 开始), 设置为 null 时优先级最低number
showTreeLeafNodeAlignDot树状模式下行头叶子节点是否显示层级占位点booleanfalse
withByField根据 field 设置每行的宽度。field 对应 s2DataConfig.fields.rows 中的 field 或 列头 id (优先级大于 width) 查看详情Record<string, number>-
heightByField根据 field 设置每行的高度。
1. 透视表:field 对应 s2DataConfig.fields.rows 中的 field 或 列头 id.
2. 明细表:field 对应 行序号,从 1 开始。(优先级大于 height) 查看详情
Record<string, number>-

CornerCell

其他公用配置见 CellTextWordWrapStyle

MergedCell

其他公用配置见 CellTextWordWrapStyle

SeriesNumberCell

其他公用配置见 CellTextWordWrapStyle

CellTextWordWrapStyle

功能描述:单元格换行配置。查看示例

参数说明类型默认值必选
wordWrap文本是否自动换行(数值单元格不建议换行)。了解更多booleantrue
maxLines最大行数,文本超出后将被截断,当 手动拖拽调整高度 或存在 自定义单元格高度 时,为保证展示合理性,会根据当前文本行高计算出能展示的最大行数,覆盖默认的 maxLines 配置。
该配置 支持配置为 Infinity(数值单元格不建议换行),需要配合 wordWrap 和 textOverflow 一起使用。了解更多
number1
maxLines最大行数,文本超出后将被截断,支持配置为 Infinity(数值单元格不建议换行),需要配合 wordWrap 和 textOverflow 一起使用。了解更多number1
textOverflow自定义隐藏的文本溢出内容,例如直接裁剪、追加省略号或一个自定义字符串,需要配合 wordWrap 和 maxLines 一起使用。了解更多stringellipsis