首页 > 解决方案 > 如何在将表字段导出到 csv 时忽略逗号?

问题描述

我发现这段代码可以将我的表格内容下载为 csv 格式,但问题是我的表格字段在其字段中有逗号(,),但该函数拆分了该字段。

这些是功能:

 function downloadCSV(csv, filename) {
                var csvFile;
                var downloadLink;

                csvFile = new Blob([csv], {type: "text/csv"});


                downloadLink = document.createElement("a");

                downloadLink.download = filename;

                downloadLink.href = window.URL.createObjectURL(csvFile);


                downloadLink.style.display = "none";

                document.body.appendChild(downloadLink);


                downloadLink.click();
            }


        function exportTableToCSV(filename) {
            var csv = [];
            var rows = document.querySelectorAll("table tr");

            for (var i = 0; i < rows.length; i++) {
                var row = [], cols = rows[i].querySelectorAll("td, th");

                for (var j = 0; j < cols.length; j++) 
                    row.push(cols[j].innerText);

                csv.push(row.join(","));        
            }

            // Download CSV file
            downloadCSV(csv.join("\n"), filename);
        }

这是html代码:

<table>
    <tr>
        <th>Name</th>
        <th>Email</th>
        <th>Location</th>
    </tr>
    <tr>
        <td>John Doe</td>
        <td>john@gmail.com</td>
        <td>India,up</td>
    </tr>
    <tr>
        <td>Stephen Thomas</td>
        <td>stephen@gmail.com</td>
        <td>UK,london</td>
    </tr>
    <tr>
        <td>Natly Oath</td>
        <td>natly@gmail.com</td>
        <td>France</td>
    </tr>
</table>

<button onclick="exportTableToCSV('members.csv')">Export HTML Table To CSV 
File</button>

john 和 natly 的位置列将被拆分。

标签: javascript

解决方案


您可以使用引号忽略逗号

 function exportTableToCSV(filename) {
            var csv = [];
            var rows = document.querySelectorAll("table tr");

            for (var i = 0; i < rows.length; i++) {
                var row = [], cols = rows[i].querySelectorAll("td, th");

                for (var j = 0; j < cols.length; j++) 
                    row.push("\""+cols[j].innerText+"\"");

                csv.push(row.join(","));        
            }

            // Download CSV file
            downloadCSV(csv.join("\n"), filename);
        }

推荐阅读