html table合并单元格同时合并行列的方法

html table合并单元格同时合并行列的方法

    • 只合并一行的单元格/只合并一列单元格的一般情况
    • 同时合并行列的情况
    • 同时合并行列单元格时出现的单元格显示比例异常问题及解决方案
      • 问题描述
      • 解决方案

在html中使用table标签,有时会需要合并单元格。
在单元格标签td中,用于合并单元格的属性:
rowspan=“合并的单元格个数” 合并行
colspan=“合并的单元格个数” 合并列
合并的代码写在参与合并的单元格中,最左侧/最上侧的单元格。最后删掉被合并的单元格。

只合并一行的单元格/只合并一列单元格的一般情况

画一个9x9的表格

    <table border="1" width="200">
        <tr>
            <td>1</td>
            <td>2</td>
            <td>3</td>
        </tr>
        <tr>
            <td>4</td>
            <td>5</td>
            <td>6</td>
        </tr>
        <tr>
            <td>7</td>
            <td>8</td>
            <td>9</td>
        </tr>
    </table>

显示效果
初始9x9表格

合并列:对2号单元格和3号单元格进行合并
在2号单元格的td标签中输入colspan=“2”
并删掉被合并的单元格(3号单元格)
删掉之后第一行只剩下两个td标签

合并行:对4号单元格和7号单元格进行合并
在4号单元格的td标签中输入rowspan=“2”
并删掉被合并的单元格(7号单元格)
删掉之后第三行只剩下两个td标签

	<table border="1" width="200">
        <tr>
            <td>1</td>
            <td colspan="2">2</td>
        </tr>
        <tr>
            <td rowspan="2">4</td>
            <td>5</td>
            <td>6</td>
        </tr>
        <tr>
            <td>8</td>
            <td>9</td>
        </tr>
	</table>

显示效果
合并行/合并列

同时合并行列的情况

同时合并行列的情况和只合并行/合并列的方法是一样的,可以同时使用rowspan和colspan

还是上面的9x9表格
初始9x9表格
这次要合并4、5、7、8四个单元格
在4号单元格中的td标签中输入rowspan=“2” colspan=“2”
删掉5、7、8号单元格
删掉后第二行只剩下两个td标签,第三行只剩下一个td标签

    <table border="1" width="200">
        <tr>
            <td>1</td>
            <td>2</td>
            <td>3</td>
        </tr>
        <tr>
            <td rowspan="2" colspan="2">4</td>
            <td>6</td>
        </tr>
        <tr>
            <td>9</td>
        </tr>
    </table>

显示效果
在这里插入图片描述

同时合并行列单元格时出现的单元格显示比例异常问题及解决方案

问题描述

到这里都是正常的,但是我发现了一个问题
上图的情况,4号单元格是四个单元格合并而来,并且其中是出现了第一、第二列的合并和第二、第三行的合并
在这种情况下,如果再出现另一个单元格合并,合并的行列和四号单元格有重叠(即涉及到第一、第二列和第二、第三行),会出现单元格显示比例异常的问题

例如:
在上图的基础上,合并2、3号单元格或者合并3、6号单元格,都会出现这样的情况

合并2、3号单元格
正常情况下,1号和2号单元格显示比例应该为1:2,但实际显示是接近1:1

    <table border="1" width="200">
        <tr>
            <td>1</td>
            <td colspan="2">2</td>
        </tr>
        <tr>
            <td rowspan="2" colspan="2">4</td>
            <td>6</td>
        </tr>
        <tr>
            <td>9</td>
        </tr>
    </table>

显示效果
合并2、3号单元格

合并3、6号单元格
正常情况下,3号和9号单元格显示比例应该为2:1,但实际是接近1:1

    <table border="1" width="200">
        <tr>
            <td>1</td>
            <td>2</td>
            <td rowspan="2">3</td>
        </tr>
        <tr>
            <td rowspan="2" colspan="2">4</td>
        </tr>
        <tr>
            <td>9</td>
        </tr>
    </table>

显示效果
合并3、6号单元格

解决方案

宽度显示异常时可以给td标签加上宽度
高度显示异常时可以给td标签加上高度

修改后的合并2、3号单元格代码
//注意这里删除了上面的代码都有的table标签里的width属性

    <table border="1">
        <tr>
            <td width="100">1</td>
            <td colspan="2" width="200">2</td>
        </tr>
        <tr>
            <td rowspan="2" colspan="2" width="200">4</td>
            <td width="100">6</td>
        </tr>
        <tr>
            <td>9</td>
        </tr>
    </table>

显示效果
修改后合并2、3号单元格
修改后的合并3、6号单元格代码

    <table border="1" width="200">
        <tr>
            <td height="50">1</td>
            <td>2</td>
            <td rowspan="2" height="100">3</td>
        </tr>
        <tr>
            <td rowspan="2" colspan="2">4</td>
        </tr>
        <tr>
            <td height="50">9</td>
        </tr>
    </table>

显示效果
修改后合并3、6号单元格

在不同场景下,有不同的合并单元方法: - **Word表**:文档中未提及在Word表合并单元的具体代码实现方法,但可通过检测表的“Uniform”属性判断是否存在合并单元,“Uniform”属性为“True”则没有合并单元,否则存在合并单元。在遍历有合并单元的表时,需采用For each的方式来遍历单元;没有合并单元的表也可以通过这种方式遍历,也能采用行列索引的方式遍历。以下是遍历Word中表单元的示例代码: ```vba Sub 遍历word中表单元示例() Dim aCell As Cell Dim aTable As Table Dim i, j, iCols, iRows As Integer For Each aTable In ActiveDocument.Tables With aTable ' 表中不存在合并单元,采用行列索引的方式遍历。 ' 存在合并单元的表用这种方式遍历将发生运行时错误。 If .Uniform Then iCols = aTable.Columns.Count iRows = aTable.Rows.Count For i = 1 To iRows For j = 1 To iCols MsgBox "uniform:" & vbCrLf & Replace(.Cell(i, j).Range.Text, Chr(13) & Chr(7), "") Next Next Else ' 表中存在合并单元, 采用For Each方式遍历。不存在合并单元的表同样可用这种方式遍历。 For Each aCell In .Range.Cells MsgBox Replace(aCell.Range.Text, Chr(13) & Chr(7), "") Next End If End With Next End Sub ``` - **el - table**:el - table提供了合并行或列的计算方法`span-method`,直接使用即可。该方法的参数有`row`(当前行)、`column`(当前列的数据)、`rowIndex`(当前行索引)、`columnIndex`(当前列索引),返回值可返回数组或对象。具体返回值含义如下: - 没有处理,代表不需要合并,也不需要被合并; - 返回1,代表不作合并处理; - 返回0,代表被合并; - 返回值大于1,代表会合并到多少单元。 举例:当`columnIndex = 0`,`rowIndex = 0`时,`return [2, 1]`或者`{rowspan: 2, colspan: 1}`,代表第一行第一列合并了第二行第一列 [^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值