javascript - 使用SheetJS将动态创建的表格内容保存在excel文件中

标签 javascript html jquery ajax sheetjs

我将行动态添加到 html 表中,并且我想使用 SheetJs 将表内容保存到 xlsx 文件中。生成的文件是空的。当以这种方式添加表格内容时,在这种情况下是否有可能做到这一点?
我还尝试在创建 xlsx 文件之前添加行 rigth。

<!DOCTYPE html>
<html>

<head>
    <script src="https://code.jquery.com/jquery-2.1.4.js"
        integrity="sha256-siFczlgw4jULnUICcdm9gjQPZkw/YPDqhQ9+nAOScE4=" crossorigin="anonymous"></script>
    <script type="text/javascript"
        src="https://cdnjs.cloudflare.com/ajax/libs/amcharts/3.21.15/plugins/export/libs/FileSaver.js/FileSaver.min.js"></script>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.15.6/xlsx.full.min.js"></script>

    <style>
        table,
        td {
            border: 1px solid black;
        }
    </style>
</head>

<body>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.10.3/xlsx.full.min.js">
    </script>

    <p>Click the button to add a new row at the first position of the
        table and then add cells and content</p>

    <table id="myTable">
        <TR>
        </TR>
    </table>
    <button type="button" id="first" onclick="First('myTable')">Principal</button>
    <button id="button-a">Create Excel</button>
    <script>
        function First(tableID) {
            let table = document.getElementById(tableID)
            table.innerHTML = "<tr>first</tr>";
        }

    </script>

    <script>
        var wb = XLSX.utils.table_to_book(document.getElementById('myTable'), { sheet: "Sheet JS" });
        var wbout = XLSX.write(wb, { bookType: 'xlsx', bookSST: true, type: 'binary' });
        function s2ab(s) {
            var buf = new ArrayBuffer(s.length);
            var view = new Uint8Array(buf);
            for (var i = 0; i < s.length; i++) view[i] = s.charCodeAt(i) & 0xFF;
            return buf;
        }
        $("#button-a").click(function () {
            saveAs(new Blob([s2ab(wbout)], { type: "application/octet-stream" }), 'test.xlsx');
        });
    </script>
</body>

</html>

最佳答案

问题

  • 里面的文字tr而不是 td在动态内容中。这导致如下表结构。

  • enter image description here
  • XLSX.utils.table_to_book在创建表内容之前调用。

  • 工作演示
    https://jsfiddle.net/aswinkumar863/95zsfg64/1/

    关于javascript - 使用SheetJS将动态创建的表格内容保存在excel文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67957011/

    相关文章:

    javascript - 如何使 Bootstrap 行靠得更近?

    javascript - JS拖放中如何设置if..else语句

    javascript - 如何检查字符串是否存在并更改另一个元素的字符串?

    javascript - jQuery - 阻止输入,直到 $.getJson 完成后

    HTML Datalist 显示由水平线分隔的额外选项

    javascript - 使用 jQuery 更改值

    javascript - 在 Meteor 应用程序中实现 MongoDB 2.4 的全文搜索

    javascript - javascript 事件处理程序中的 'event' 参数来自哪里?

    javascript - 试图创建一个只允许用户在此 jquery 中输入一次单词的输入?

    html - Timevis - 使用自定义 css 更改字体大小