将其导出到csv时如何忽略表字段内的逗号?

时间:2018-11-20 18:48:53

标签: javascript

我发现此代码将我的表内容下载为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的位置列将被拆分。

1 个答案:

答案 0 :(得分:1)

您可以使用引号忽略逗号

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