行高列宽
在数据分析领域,表格是一种常见的数据展示方式。正确设置表格的行高列宽对于提高数据可读性和美观性具有重要意义。本教程将围绕 VTable 中的表格行高列宽计算功能,带了解如何正确配置行高和列宽以满足实际需求。
列宽计算模式
在 VTable 中,表格列宽度的计算模式widthMode可以配置为 standard(标准模式)、adaptive(自适应容器宽度模式)或 autoWidth(自动列宽模式)。demo 示例。(如果设置了widthMode: 'autoWidth', 那么每一个单元格都会参与计算宽度,可想而知这个计算过程是需要耗费性能的。)
- 标准模式(standard):表格使用
width属性指定的宽度作为列宽度,如未指定,则采用defaultColWidth或defaultHeaderColWidth设定的默认列宽。 - 自适应容器宽度模式(adaptive):在自适应容器宽度模式下表格使用容器的宽度分配列宽度(每列宽度的比例基于 standard 模式中的宽度值)。 如果不想表头参与计算可通过
widthAdaptiveMode来改变。demo 示例 - 自动列宽模式(autoWidth):在自动宽度模式下,根据列头和 body 单元格中的内容自动计算列宽度,忽略设置的
width属性和defaultColWidth。
行高计算模式
表格行高度的计算模式heightMode也可以配置为 standard(标准模式)、adaptive(自适应容器宽度模式)或 autoHeight(自动行高模式)。
- 标准模式(standard):采用
defaultRowHeight及defaultHeaderRowHeight作为行高。 - 自适应容器高度模式(adaptive):使用容器的高度分配每行高度,默认逻 辑是基于每行内容计算后的高度比例来分配。如果不想表头参与计算可通过
heightAdaptiveMode来改变。如果只想通过默认高度来计算行高,则可以通过关闭配置autoHeightInAdaptiveMode来实现, 这样反而节省性能。 - 自动行高模式(autoHeight):根据内容自动计算行高,计算依据 fontSize 和 lineHeight(文字行高),以及 padding。相关搭配设置项
autoWrapText自动换行,可以根据换行后的多行文本内容来计算行高。
行高相关配置
默认行高
在 VTable 中,您可以为整个表格设置一个统一的默认行高值。默认行高可以通过 defaultRowHeight 配置项进行设置。以下代码示例展示了如何设置默认行高为 50:
const table = new VTable.ListTable({ defaultRowHeight: 50 });
VTable 内部设置的默认行高为 40。
表头默认行高
除了默认行高的设置,VTable 还支持针对表头的行高进行设置。通过 defaultHeaderRowHeight 配置项进行设置,该配置项可以设定为一个数组,分别对应各级表头行的高度,或者一个数值统一设置表格各行高度。
定义如下,如果设置为 auto 可以根据表头单元格内容计算高度。
/**表头默认行高 可以按逐行设置 如果没有就取defaultRowHeight */ defaultHeaderRowHeight: (number | 'auto') | (number | 'auto')[];
以下代码示例展示了如何设置一级表头行高为 30,二级表头行高为 'auto':
const table = new VTable.ListTable({ defaultHeaderRowHeight: [30, 'auto'] });
行高撑满容器:autoFillHeight
配置项 autoFillHeight,用于控制是否自动撑满容器高度。区别于高度模式heightMode的adaptive的自适应容器的效果,autoFillHeight 控制的是只有当行数较少的时候,表格可以自动撑满容器高度,但是当行数超过容器的时候根据真实情况来定行高可出现滚动条。
const table = new VTable.ListTable({ autoFillHeight: true });
自定义计算行高
如果需要自定义计算行高的逻辑,可以配置customComputeRowHeight函数来代理 VTable 内部计算行高的逻辑。
逐列设置行高
通过rowHeightConfig配置项进行设置,该配置项可以设定为一个数组,分别对应每一行的行高。key 为行索引,height 为行高。
const table = new VTable.ListTable({ rowHeightConfig: [{key: 0, height: 50}, {key: 3, height: 60}] });
列宽相关配置
列宽 width
可以在列属性中配置具体的宽度值,或者百分比或者auto自动计算列宽。
width?: number | string;
基本表格配置列宽:
const table = new VTable.ListTable({ columns: [ { // ...其他配置项 width: 200 } ] });
除了在列属性中配置具体的宽度值,还可以通过columnWidthConfig配置项进行设置,该配置项可以设定为一个数组,分别对应每一列的列宽。key 为columns中定义的每列具体配置中的key,width 为列宽。
const table = new VTable.ListTable({ columns: [ { // ...其他配置项 key: 'name', title: '姓名', field: 'name', }, { // ...其 他配置项 key: 'age', title: '年龄', field: 'age', } ], columnWidthConfig: [{key: 'name', width: 200}, {key: 'age', width: 300}] });
透视表列宽配置:
- 关联指标设置列宽
const table = new VTable.PivotTable({ indicators: [ { // ...其他配置项 width: 200 } ], ... });
- 通过维度路径设置列宽
通过columnWidthConfig配置项进行设置,该配置项可以设定为一个数组,分别对应各级维度路径的列的宽度。
const table = new VTable.PivotTable({ columnWidthConfig: [ { dimensions: [ { dimensionKey: '地区', value: '东北' }, { dimensionKey: '邮寄方式', value: '二级' }, { indicatorKey: '2', value: '利润' } ], width: 130 }, { dimensions: [ { dimensionKey: '地区', value: '东北22' }, { indicatorKey: '1', value: '销售额' } ], width: 160 } ], ... });
效果如下:

基本表格ListTable,透视表PivotTable,透视图PivotChart都支持这个配置项。
另外,透视表和透视图还支持columnWidthConfigForRowHeader配置项,用于设置行表头列宽。
注意和columnWidthConfig的区别,columnWidthConfigForRowHeader是通过行维度key设置行表头列宽,而columnWidthConfig是设通过列维度路径来设置列宽。如果不想通过维度key设置行表头列宽,也可以通过配置defaultHeaderColWidth来设置。
默认列宽
在 VTable 中,您可以设置一个统一的默认列宽值。默认列宽可以通过 defaultColWidth 配置项进行设置。以下代码示例展示了如何设置列宽为 100:
const table = new VTable.ListTable({ defaultColWidth: 100 });
行表头默认列宽
除了默 认列宽的设置,VTable 还支持针对行表头的列宽进行设置。通过defaultHeaderColWidth配置项进行设置,该配置项可以设定为一个,分别对应各级行表头列的宽度。
/**表头默认列宽 可以按逐列设置 如果没有就取defaultColWidth */ defaultHeaderColWidth: (number | 'auto') | (number | 'auto')[];
以下代码示例展示了如何设置一级行表头列宽为 50,二级行表头列宽为 60:
const table = new VTable.ListTable({ defaultHeaderColWidth: [50, 60] });
需要注意的是:这个配置仅针对行表头起作用,如果是列表头的话是不考虑这个配置项的(会按 body 部分定义的宽度设置来执行逻辑)。
具体的如:
- 转置基本表格,如配置 defaultHeaderColWidth: [50, 'auto'], 表示转置表格的表头第一列宽度 50,第二列按单元格内容适应宽度
- 透视表,如配置 defaultHeaderColWidth: [50, 'auto'], 表示透视表的行表头第一列宽度 50(即第一级维度),第二列(第二级维度)按单元格内容适应宽度。