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

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

在导出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

  • 17
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Vue 中,你可以使用第三方库 `xlsx-style` 来设置导出表格时的单元格样式,包括合并单元格边框样式。下面是一个简单的例子: 首先,安装 `xlsx-style` 库: ``` npm install xlsx-style --save ``` 然后,在组件中引入 `xlsx-style` 库: ``` import * as XLSX from 'xlsx'; import * as XLSXStyle from 'xlsx-style'; ``` 接着,定义一个方法来生成 Excel 文件: ``` methods: { exportExcel() { // 创建工作簿和工作表 const wb = XLSX.utils.book_new(); const ws = XLSX.utils.json_to_sheet(this.data); // 合并单元格 const mergeCells = [ { s: { r: 1, c: 1 }, e: { r: 2, c: 1 } }, { s: { r: 1, c: 2 }, e: { r: 1, c: 3 } } ]; ws['!merges'] = mergeCells; // 设置单元格样式 const style = { border: { top: { style: 'thin' }, bottom: { style: 'thin' }, left: { style: 'thin' }, right: { style: 'thin' } } }; for (const cell in ws) { if (cell[0] === '!') continue; ws[cell].s = style; } // 将工作表添加到工作簿 XLSX.utils.book_append_sheet(wb, ws, 'Sheet1'); // 导出 Excel 文件 const wbout = XLSXStyle.write(wb, { bookType: 'xlsx', type: 'array' }); const blob = new Blob([wbout], { type: 'application/octet-stream' }); const fileName = 'example.xlsx'; const downloadLink = document.createElement('a'); downloadLink.href = window.URL.createObjectURL(blob); downloadLink.download = fileName; document.body.appendChild(downloadLink); downloadLink.click(); document.body.removeChild(downloadLink); } } ``` 在这个例子中,我们定义了一个 `exportExcel` 方法来生成 Excel 文件。首先,我们创建一个工作簿和一个工作表。然后,我们定义了一个 `mergeCells` 数组来合并单元格。接着,我们定义了一个 `style` 对象来设置单元格样式,包括边框样式。最后,我们将工作表添加到工作簿中,然后导出 Excel 文件。 注意,这个例子中的 `data` 属性是一个数组,用来存储导出的数据。你需要根据自己的需求来修改这个属性。另外,这个例子中的合并单元格单元格样式都是固定的,你需要根据自己的需求来修改这些值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值