美酒没故事° 2024-02-04 10:56 采纳率: 37.8%
浏览 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 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。