首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tabulator.js下载/打印嵌套表

Tabulator.js下载/打印嵌套表
EN

Stack Overflow用户
提问于 2022-07-26 11:32:59
回答 1查看 90关注 0票数 0

我有一张有问题的桌子,每个问题有一个或多个答案。表是以一种方式格式化的,每个问题都是一行,答案通过rowFormatter和subTable显示在下面。当我下载表格为pdf时,嵌套的数据不会被导出。如何导出嵌套数据?

数据结构(示例):

代码语言:javascript
复制
{
        "questiontext": "text",
        "timestamp": "2022-07-25T20:19:41.933Z",
        "answers": [
            {
                "timestamp": "2022-07-25T20:19:41.933Z",
                "answer": "answertext",
                "picture":"pic1.jpg"
            },
            {
                "timestamp": "2022-07-26T20:19:41.933Z",
                "answer": "answertext",
                "picture":"pic2.jpg"
            },
            {
                "timestamp": "2022-07-27T20:19:41.933Z",
                "answer": "answertext",
                "picture":"pic3.jpg"
            }
        ]
    },

代码:

代码语言:javascript
复制
var table = new Tabulator("#table", {
    height: "805px",
    layout: "fitColumns",
    columns: [
        { title: "Time", field: "timestamp"},
        { title: "Question", field: "questiontext"},
    ],
    rowFormatter: function (row) {
        var holderEl = document.createElement("div");
        var tableEl = document.createElement("div");

        holderEl.appendChild(tableEl);
        row.getElement().appendChild(holderEl);

        var subTable = new Tabulator(tableEl, {
            height:"1px",
            layout:"fitColumns",
            data:row.getData().answers,
            columns:[
                {title:"Answers", field:"answer"},
            ],
            rowFormatter:function(row_inner){
                var element = row.getElement(),
                data = row_inner.getData(),
                width = element.offsetWidth,
                rowTable, cellContents;
                
                rowTable = document.createElement("table")
                rowTable.style.width = (width - 18) + "px";
        
                rowTabletr = document.createElement("tr");
        
                //add image on left of row
                cellContents = "<td><img src='/pictures/" + data.picture + "'></td>";
                //add row data on right hand side
                cellContents += "<td><div><strong>Timestamp:</strong> " + data.timestamp + "</div><div><strong>Answer:</strong> " + data.answer +"</div></td>"
        
                rowTabletr.innerHTML = cellContents;
                rowTable.appendChild(rowTabletr);
                //append newly formatted contents to the row
                element.append(rowTable);
            },
        })
    },
});

表(示例)

出口(例如)

EN

回答 1

Stack Overflow用户

发布于 2022-08-04 12:31:16

我在寻找做同样的事情。

根据Github中的一些帖子,子表导出不是由Excel导出模块管理的。

关于嵌套表https://github.com/olifolkerd/tabulator/issues/2932的导出到Excel的规定

而且,这似乎是可能的,只有一个定制的下载程序。

用于XLS下载的库是SheetJS http://tabulator.info/docs/5.3/download#xlsx

根据SheetJS文档,可以从JSON:http://tabulator.info/docs/5.3/download#json生成一个Excel文件

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73122621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档