关于xlsx导出表格合并单元格边框样式缺失的问题

文章讲述了作者在导出Excel表格时遇到的问题,通过调整合并单元格的代码,确保A到Z的每个字母范围都有边框,解决了一个关于单元格边框存在的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在导出excel表的时候遇到了这个问题,看了一下前面几位老哥的方法

老哥1

老哥2

修改一下终于行了,修改后应该可以满足A 到 ZZ,三个就不行了

const sheet = XLSX.utils.aoa_to_sheet(excelHeader);
sheet['!merges'] = merges
this.addRangeBorder(sheet['!merges'], sheet)
addRangeBorder (range, ws) {
    // 合并行边框
    const cols = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
    range.forEach(item => {
        for (let i = item.s.c; i <= item.e.c; i++) {
            const num = Math.floor(i / 26)
            let cellX = ''
            if (num < 1) {
                cellX = cols[i]
            } else {
                cellX = cols[num - 1] + cols[i % 26]
            }
            for (let k = item.s.r + 1; k <= item.e.r + 1; k++) {
                if (!Object.keys(ws).includes(cellX + k)) {
                    ws[cellX + k] = {
                        // 这一步很关键,需要让单元格的值存在,才能有边框,没有的话单元格还是没边框
                        t: 's',
                        v: '',
                        s: {
                            border: {
                                top: {
                                    style: 'thin',
                                    color: {rgb: '000000'}
                                },
                                bottom: {
                                    style: 'thin',
                                    color: {rgb: '000000'}
                                },
                                left: {
                                    style: 'thin',
                                    color: {rgb: '000000'}
                                },
                                right: {
                                    style: 'thin',
                                    color: {rgb: '000000'}
                                }
                            }
                        }
                    }
                }

            }
        }
    })
}

效果

记录:2024.2.28

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值