【问题标题】:Tabulator.js download / print nested tablesTabulator.js 下载/打印嵌套表
【发布时间】:2022-08-04 20:31:16
【问题描述】:

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

数据结构(示例):

{
        \"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\"
            }
        ]
    },

代码:

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);
            },
        })
    },
});

表(示例)

出口(示例)

    标签: jspdf tabulator jspdf-autotable


    【解决方案1】:

    我正在寻找做同样的事情。

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

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

    而且似乎只有使用自定义下载器才有可能。

    【讨论】:

      猜你喜欢
      • 2019-03-10
      • 2012-11-26
      • 2012-05-15
      • 2015-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多