美酒没故事° 2024-02-04 10:56 采纳率: 38%
浏览 6

插件 exceljs 的 addTable() 报错,怎么回事啊?

img

我的代码:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>exceljs 使用</title>
    </head>
    <body>
        <button onclick="exporting()">导出</button>



        <script>
            function exporting() {
                // 创建工作簿
                const _workbook = new ExcelJS.Workbook()
                // 添加工作表
                const _sheet1 = _workbook.addWorksheet('sheet1')


                // 配置导出表格
                _sheet1.addTable({
                    name: 'MyTestTable',
                    ref: 'A1', // 表格左上角的位置
                    headerRow: true,
                    totalsRow: false,
                    style: {
                        theme: 'TableStyleLight1',
                        //            showRowStripes: true,
                    },
                    columns: [{
                            header: '名次',
                            key: 'sort',
                            width: 10
                        },
                        {
                            header: '班级',
                            key: 'class',
                            width: 20
                        },
                        {
                            header: '姓名',
                            key: 'name',
                            width: 20
                        },
                        {
                            header: '得分',
                            key: 'score',
                            width: 10
                        },
                    ],
                    rows: [{
                        sort: 1,
                            class: '前端三班',
                            name: 'Buer',
                            score: 99
                        },
                        {
                            sort: 2,
                            class: '前端一班',
                            name: 'Jack',
                            score: 86
                        },
                        {
                            sort: 3,
                            class: '前端一班',
                            name: 'Mary',
                            score: 58
                        }
                    ],
                })


                _sheet1.getRow(1).border = {
                    top: {
                        style: 'thin'
                    },
                    left: {
                        style: 'thin'
                    },
                    bottom: {
                        style: 'thin'
                    },
                    right: {
                        style: 'thin'
                    },
                }
                _sheet1.getRow(1).font = {
                    bold: true,
                }





















                // 导出表格
                _workbook.xlsx.writeBuffer().then((buffer) => {
                    let _file = new Blob([buffer], {
                        type: 'application/octet-stream',
                    })
                    const blob = new Blob([buffer], {
                        type: 'arraybuffer'
                    })
                    const link = document.createElement('a')
                    link.href = URL.createObjectURL(blob)
                    link.download = '测试' + '.xlsx'
                    link.click()
                    URL.revokeObjectURL(link.href) // 下载完成释放掉blob对象
                })
            }
        </script>
        <script src="https://cdn.jsdelivr.net/npm/exceljs@4.4.0"></script>
    </body>
</html>
  • 写回答

2条回答 默认 最新

  • 专家-郭老师 Java领域新星创作者 2024-02-04 10:57
    关注

    参考通义千问和郭老师的小迷弟雅思莫了-编写提供,主要是为了帮助您快速解决问题,如下回答,您可以参考下,如有问题,评论区留言。

    在您的代码中,问题出在使用 addTable() 方法时的数据格式不正确。addTable() 需要的 rows 属性中的每个对象应该包含与 columnskey 对应的属性,而在您提供的代码里,rows 的数据结构与 columns 不匹配。

    正确的 rows 数据结构应该是:

    rows: [
        { sort: 1, class: '一班', name: '王小虎', score: 90 },
        { sort: 2, class: '二班', name: '李小明', score: 95 },
        // 更多行...
    ],
    

    rows 数组调整为上述格式后,addTable() 方法应该可以正常工作了。以下是修复后的相关部分代码:

    // ...
    rows: [
        { sort: 1, class: '一班', name: '王小虎', score: 98 },
        { sort: 2, class: '一班', name: '李小明', score: 95 },
        { sort: 3, class: '二班', name: '张三', score: 92 },
        { sort: 4, class: '二班', name: '李四', score: 96 },
    ],
    // ...
    
    评论

报告相同问题?

问题事件

  • 修改了问题 2月4日
  • 修改了问题 2月4日
  • 创建了问题 2月4日

悬赏问题

  • ¥15 电脑最近经常蓝屏,求大家看看哪的问题
  • ¥60 高价有偿求java辅导。工程量较大,价格你定,联系确定辅导后将采纳你的答案。希望能给出完整详细代码,并能解释回答我关于代码的疑问疑问,代码要求如下,联系我会发文档
  • ¥50 C++五子棋AI程序编写
  • ¥30 求安卓设备利用一个typeC接口,同时实现向pc一边投屏一边上传数据的解决方案。
  • ¥15 SQL Server analysis services 服务安装失败
  • ¥15 基于面向对象的图书馆借阅管理系统
  • ¥15 opencv图像处理,需要四个处理结果图
  • ¥20 centos linux 7.9安装php8.2.18不支持mysqli模块的问题
  • ¥15 stata空间计量LM检验
  • ¥15 关于k8s node节点被释放后如何驱逐节点并添加新节点