You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Material UI Table中实现同一列共享两个表头单元格

Material UI 表格多表头共享列实现方案

实现你要的「4个表头、3列内容,最后两个表头共享同一列」的效果,有两种常见实现方案,根据你的表头排列需求选择即可:


方案1:单行表头,两个表头同列排列

核心逻辑是保持表头单元格总数和内容列数一致(均为3个),仅在第三列的表头单元格内部嵌套两个表头文本,通过MUI的布局组件控制两个表头的排列方式:

import { Table, TableHead, TableRow, TableCell, TableBody, Box, Typography, Divider } from '@mui/material';

const DemoTable = () => {
  return (
    <Table>
      <TableHead>
        <TableRow>
          <TableCell>表头1</TableCell>
          <TableCell>表头2</TableCell>
          {/* 共享列的表头单元格,内部放两个表头 */}
          <TableCell>
            <Box sx={{ 
              display: 'flex', 
              gap: 2, 
              alignItems: 'center' 
              // 若要上下排列加下行:flexDirection: 'column', alignItems: 'flex-start'
            }}>
              <Typography variant="body2" fontWeight={600}>表头3</Typography>
              {/* 需分隔线可加下行 */}
              {/* <Divider orientation="vertical" flexItem /> */}
              <Typography variant="body2" fontWeight={600}>表头4</Typography>
            </Box>
          </TableCell>
        </TableRow>
      </TableHead>
      <TableBody>
        <TableRow>
          <TableCell>列1内容</TableCell>
          <TableCell>列2内容</TableCell>
          <TableCell>列3内容</TableCell>
        </TableRow>
        {/* 其余数据行结构同上 */}
      </TableBody>
    </Table>
  )
}

方案2:两行表头,两个表头分属两行共享下方列

如果你的两个表头是上下分层排列的,可通过原生rowSpan、colSpan属性实现:

import { Table, TableHead, TableRow, TableCell, TableBody } from '@mui/material';

const DemoTable = () => {
  return (
    <Table>
      <TableHead>
        {/* 第一行表头 */}
        <TableRow>
          <TableCell rowSpan={2}>表头1</TableCell>
          <TableCell rowSpan={2}>表头2</TableCell>
          <TableCell align="center">表头3</TableCell>
        </TableRow>
        {/* 第二行表头 */}
        <TableRow>
          <TableCell align="center">表头4</TableCell>
        </TableRow>
      </TableHead>
      <TableBody>
        <TableRow>
          <TableCell>列1内容</TableCell>
          <TableCell>列2内容</TableCell>
          <TableCell>列3内容</TableCell>
        </TableRow>
        {/* 其余数据行结构同上 */}
      </TableBody>
    </Table>
  )
}

如果需要调整表头的对齐方式、间距,直接修改对应组件的sx属性即可。

内容的提问来源于stack exchange,提问作者theJuls

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 09:09:03