表格合并单元格

方案一elemenui:

https://blog.csdn.net/weixin_41897680/article/details/121837200

方案二原生table:

页面HTML

<template>
    <section>
        <table class="go-table">
            <tr>
                <td>园区</td>
                <td>学院</td>
                <td>专业</td>
                <td>楼幢</td>
                <td>人数</td>
            </tr>
            <tr v-for="(row, key) in newList" :key="key">
                <template v-for="(cell, index) in row">
                    <td v-if="cell !== null" :key="index" 
                    :rowspan="mergeCell(key, index, 'c')"
                    >
                    <div :style="{'color':row.includes('合计')?'red':''}">  
                        {{ cell }}
                    </div>
                    </td>
                </template>
            </tr>
        </table>
    </section>
</template>



<style lang="less" scoped>
.go-table {
    border: 1px solid #e6e6e6;
    border-collapse: collapse;
    width: 100%;
    text-align: center;
    tr,
    td {
        border: 1px solid #e6e6e6;
        padding: 10px;
    }
}
</style>

对于数据的处理:

<script lang="ts">
import log from '@/router/module/asset/log';
import { Component, Vue } from 'vue-property-decorator';
@Component
export default class extends Vue {
    listNew = [
        {
            name: 'a校区',
            children: [
                {
                    name: '成龙学院',
                    children: [
                        {
                            name: 'a专业',
                            children: [
                                {
                                    name: '1a楼',
                                    num: '18',
                                },
                                {
                                    name: '2a楼',
                                    num: '18',
                                },
                                {
                                    name: '3a楼',
                                    num: '18',
                                },
                            ],
                        },
                        {
                            name: 'b专业',
                            children: [
                                {
                                    name: 'a楼',
                                    num: '18',
                                },
                            ],
                        },
                    ],
                },
                {
                    name: '2成龙学院',
                    children: [
                        {
                            name: 'a专业',
                            children: [
                                {
                                    name: '1a楼',
                                    num: '18',
                                },
                                {
                                    name: '2a楼',
                                    num: '18',
                                },
                                {
                                    name: '3a楼',
                                    num: '18',
                                },
                            ],
                        },
                        {
                            name: 'b专业',
                            children: [
                                {
                                    name: 'a楼',
                                    num: '18',
                                },
                            ],
                        },
                    ],
                },
            ],
        },
        {
            name: 'b校区',
            children: [
                {
                    name: '成龙学院',
                    children: [
                        {
                            name: 'a专业',
                            children: [
                                {
                                    name: '1a楼',
                                    num: '18',
                                },
                                {
                                    name: '2a楼',
                                    num: '18',
                                },
                                {
                                    name: '3a楼',
                                    num: '18',
                                },
                            ],
                        },
                        {
                            name: 'b专业',
                            children: [
                                {
                                    name: 'a楼',
                                    num: '18',
                                },
                            ],
                        },
                    ],
                },
                {
                    name: '2成龙学院',
                    children: [
                        {
                            name: 'a专业',
                            children: [
                                {
                                    name: '1a楼',
                                    num: '18',
                                },
                                {
                                    name: '2a楼',
                                    num: '18',
                                },
                                {
                                    name: '3a楼',
                                    num: '18',
                                },
                                {
                                    name: '合计',
                                    num: '18',
                                },
                            ],
                        },
                        {
                            name: 'b专业',
                            children: [
                                {
                                    name: 'a楼',
                                    num: '18',
                                },
                            ],
                        },
                    ],
                },
            ],
        },
    ];
    /*  arr=[
        [],
        []
    ] */
    newMerge: any = [];
    formatData() {
        let merges = [{ s: { r: 0, c: 0 }, e: { r: 0, c: 4 } }];
        let parentData: any = [];
        /* 遍历校区 */
        let merge1: any = [];
        let merge2: any = [];
        let merge3: any = [];
        let childData: any = [null, null, null, null, null];
        this.listNew.forEach((item, index1) => {
            childData[0] = item.name;
            if (merge1.length > 0) {
                merge1[merge1.length - 1].e = { r: parentData.length, c: 0 };
            }
            merge1.push({ s: { r: parentData.length, c: 0 }, e: { r: parentData.length, c: 0 } });
            if (item.children) {
                /* 遍历学院 */
                item.children.forEach((item2, index2) => {
                    childData[1] = item2.name;
                    if (merge2.length > 0) {
                        merge2[merge2.length - 1].e = { r: parentData.length, c: 1 };
                    }
                    merge2.push({ s: { r: parentData.length, c: 1 }, e: { r: parentData.length, c: 1 } });
                    if (item2.children) {
                        /* 专业  */
                        item2.children.forEach((item3, index3) => {
                            childData[2] = item3.name;
                            if (merge3.length > 0) {
                                merge3[merge3.length - 1].e = { r: parentData.length, c: 2 };
                            }
                            merge3.push({ s: { r: parentData.length, c: 2 }, e: { r: parentData.length, c: 2 } });
                            if (item3.children) {
                                /* 楼数 */
                                item3.children.forEach((item4, index4) => {
                                    childData[3] = item4.name;
                                    childData[4] = item4.num;
                                    parentData.push(childData);
                                    childData = [null, null, null, null, null];
                                });
                            }
                        });
                    }
                });
            }
        });
        this.newMerge = [...merge1, ...merge2,...merge3];
        merge1[merge1.length - 1].e = { r: parentData.length, c: 0 };
        merge2[merge2.length - 1].e = { r: parentData.length, c: 1 };
        merge3[merge3.length - 1].e = { r: parentData.length, c: 2 };
         
        this.newMerge = [...merge1, ...merge2,...merge3];
        return parentData;
    }
    merges = [{ s: { r: 0, c: 0 }, e: { r: 0, c: 4 } }];

    mergeCell(r: number, c: number, type: 'c' | 'r') {
        return this.test(r, c, type, this.newMerge);
    }
    newList: any = [];
    created() {
        this.newList = this.formatData();
        /* (this.newList = [
            ['a学校', 'a学院', '汉语言文学1', '楼', '55'],
            [null, 'b学院', '汉语言文学2', '楼', '55'],
            [null, null, null, '楼', '55'],
            [null, null, null, '楼', '55'],
            ['b学校', null, null, '楼', '55'],
        ]), */
        console.log(this.newList, this.newMerge, 3333);
    }

   

    test(r: number, c: number, type: 'c' | 'r', merges: any[]) {
        const curr = { r, c };

        for (let i = 0; i < merges.length; i++) {
            const val = merges[i];
            if (val.s.r == curr.r && val.s.c === curr.c) {
                const { s, e } = val;
                const col = e.c - s.c,
                    row = e.r - s.r;
                    console.log(col,row,1111);
                    return row ? row  : null;  
                /* if (type === 'c') return col ? col + 1 : null;

                if (type === 'r') return row ? row + 1 : null; */
            }
        }

        return null;
    }
}
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: LabVIEW 是一款强大的图形化编程工具,用于快速开发各种自动化控制系统和实验室测试和测量系统。在 LabVIEW 中,可以使用表格控件来显示和编辑数据。 当需要将多个单元格合并成一个单元格时,我们可以使用 LabVIEW 中的表格控件的合并单元格功能。合并以后的单元格将显示为一个大的单元格,其中包含所有合并的单元格数据。这可以让显示更整洁,达到视觉效果的目的。 要合并单元格,请首先在 LabVIEW 中添加一个表格控件,并确保表格控件具有足够的行和列。然后双击表格控件打开其编辑器。在编辑器中,您将看到表格的所有单元格。 要合并单元格,请首先选择要合并的单元格。然后右键单击鼠标,在弹出菜单中选择“合并单元格”选项。合并后,要恢复原始单元格,只需右键单击要分裂的单元格,然后选择“拆分单元格”选项即可。 总之,LabVIEW 中的表格控件可以让用户轻松地显示和编辑数据。合并单元格是一项有用的功能,可以让数据更好地显示,提高可读性和可视性。 ### 回答2: 在LabVIEW中,合并单元格是一个非常简单的操作。您可以使用LabVIEW的Table工具来创建表格,然后在表格上单击右键。在右键菜单中,选择“合并单元格”选项。 当您选择了“合并单元格”选项后,LabVIEW将弹出一个对话框,让您选择要合并的单元格。您只需单击每个您想要合并的单元格,然后单击“确定”按钮。 合并单元格后,LabVIEW将自动调整表格的大小,并将所选单元格内容合并到一个单元格中。您可以将该单元格视为一个单独的单元格,其大小和单元格内容也与之前的单元格有所不同。 在LabVIEW中,合并单元格非常有用,特别是当您想要将多个单元格合并为一个单元格,以便更好地管理表格时。无论是在数据分析、实验研究还是数据报告中,表格都是常见的数据处理方式。因此,了解如何在LabVIEW中合并单元格可以使您更高效地处理数据。 ### 回答3: 在 LabVIEW 的表格中,要合并单元格可以通过以下步骤实现: 1. 点击要合并的第一个单元格,然后按住 Shift 键选中要合并的单元格区域。 2. 在右键菜单中选择“单元格合并”。 3. 确认合并后单元格的位置和大小是否符合要求。 通过合并单元格可以使表格的视觉效果更加美观,也方便用户对数据进行查看。在实际应用中,经常需要将几个单元格合并为一个单元格,以便于表格的展示和数据的分析。例如,在制作考勤表或者成绩表时,需要将某些单元格合并为一个单元格,以便于查看和比较。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值