javascript - 导出带有 csv 链接的 html 表

标签 javascript

我正在使用以下函数将表格导出到 csv 文件,以便我们的用户将购买的副本导出为可以在 Quickbooks、Excel 等中使用的格式。

该函数运行良好,只是表的第一列包含 url,并且这些列在导出中显示为空白。

我想知道如何修改它,以便当遇到链接作为字段时,该链接的文本将添加到 csv 中。

示例:<a href="example.php">an example</a>将添加 an example到该字段的 csv。

        function exportTableToCSV($table, filename) {
            var $rows = $table.find('tr:has(td),tr:has(th)'),
            tmpColDelim = String.fromCharCode(11), // vertical tab character
            tmpRowDelim = String.fromCharCode(0), // null character
            colDelim = '","',
            rowDelim = '"\r\n"',
            csv = '"' + $rows.map(function (i, row) {
                var $row = $(row), $cols = $row.find('td,th');
                return $cols.map(function (j, col) {
                    var $col = $(col), text = $col.text();
                    return text.replace(/"/g, '""'); // escape double quotes
                }).get().join(tmpColDelim);
            }).get().join(tmpRowDelim).split(tmpRowDelim).join(rowDelim).split(tmpColDelim).join(colDelim) + '"',
            csvData = 'data:application/csv;charset=utf-8,' + encodeURIComponent(csv);
            console.log(csv);

            if (window.navigator.msSaveBlob) { // IE 10+
                window.navigator.msSaveOrOpenBlob(new Blob([csv],
                {type: "text/plain;charset=utf-8;"}),
                "csvname.csv")
            } else {
                $(this).attr({ 'download': filename, 'href': csvData, 'target': '_blank' });
            }
        }

最佳答案

据我所知,您的代码片段应该已经支持这一点。它迭代表的所有行,并迭代其所有列字段的每一行,其中 jQuery 的 text()应用函数来提取文本。这也应该返回标签之间的文本。

示例:

console.log($('<td><a href="test.html">Test page</a></td>').text());
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

将返回字符串测试页

This fiddle包含您提供的函数和带有一些 anchor 元素的虚拟表。我认为它已经满足您的要求。

关于javascript - 导出带有 csv 链接的 html 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56726426/

相关文章:

javascript - 将 Javascript 转换为 jQuery ajax?

javascript - 不能在另一个函数的关联代码中使用函数变量吗?

javascript - 检查div内容是否滚动到页面底部

javascript - 获取选定的 JSON 数据

javascript - 如何将图标与 CSS 中自定义卡片组件中的边框对齐?

javascript - 计算 HTML 表格中的百分比 - jQuery

javascript - Angular ui路由器不区分大小写的查询参数

javascript - JQuery 访问单击的元素而不使用闭包

javascript - jQuery:如何检查元素是否存在并更改 css 属性

javascript - 在 JavaScript 中创建队列并在匿名函数中访问全局变量