如何将包含逗号的HTML表格数据导出到.csv文件?

杰里米·F。

我使用以下将HTML表格数据导出为CSV作为起点,但我的问题是,如果html数据中的数据包含逗号,会发生什么情况。我要输入什么以csv.push(row.join(","));使带有逗号的数据不会被压入下一列?

这是我正在使用的代码:

            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);
            }
            
            function downloadCSV(csv, filename) {
                var csvFile;
                var downloadLink;
                // CSV file
                csvFile = new Blob([csv], {type: "text/csv"});
                // Download link
                downloadLink = document.createElement("a");
                // File name
                downloadLink.download = filename;
                // Create a link to the file
                downloadLink.href = window.URL.createObjectURL(csvFile);
                // Hide download link
                downloadLink.style.display = "none";
                // Add the link to DOM
                document.body.appendChild(downloadLink);
                // Click download link
                downloadLink.click();
            }
            /* W3.CSS 4.13 June 2019 by Jan Egil and Borge Refsnes */
            html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}
            .w3-container:after,.w3-container:before,.w3-panel:after,.w3-panel:before,.w3-row:after,.w3-row:before,.w3-row-padding:after,.w3-row-padding:before,
            .w3-container,.w3-panel{padding:0.01em 16px}.w3-panel{margin-top:16px;margin-bottom:16px}
            table {
              font-family: arial, sans-serif;
              border-collapse: collapse;
              width: 100%;
            }

            td, th {
              border: 1px solid #dddddd;
              text-align: left;
              padding: 8px;
            }

            tr:nth-child(even) {
              background-color: white;
            }
            tr:nth-child(odd) {
              background-color: white;
            }
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
        <meta name="google" content="notranslate">        
        <meta name="viewport" content="width=device-width, initial-scale=1">
    </head> 
    <body>    
        <div class="w3-container w3-orange" >
             <h2 class="w3-animate-left">Server Table</h2>
             <form>
              <table id="bob">
                      <tr>
                        <th>Process Number</th>
                        <th>Connection String</th>
                        <th>Database Name</th>
                        <th>Table Name</th>
                        <th>Run Status</th>
                      </tr>
                      <tr>
                        <td>1</td>
                        <td>Server1,1433</td>
                        <td>tempdb</td>
                        <td>Table1</td>
                        <td>Pass</td>
                      </tr>
                      <tr>
                        <td>2</td>
                        <td>Server2,1433</td>
                        <td>tempdb</td>
                        <td>Table3</td>
                        <td>Pass</td>
                      </tr>
                    </table>
                <p></p>
            <p></p>
            <button onclick="exportTableToCSV('Server_Data.csv')">Export Results To CSV File</button>
            </form>
        </div>
</body></html>

基本的

在获取内部文本时,请用引号将内容引起来。这将防止CSV读取逗号作为中断,而是将其保留为单个单元格。

下面是您上面的代码,我刚刚删除了FORM元素,以便您可以在此处实际运行它。

行已更改:

row.push('"' + cols[j].innerText + '"');

或使用模板字符串使其更整洁:

row.push(`"${cols[j].innerText}"`);

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);
            }
            
            function downloadCSV(csv, filename) {
                var csvFile;
                var downloadLink;
                // CSV file
                csvFile = new Blob([csv], {type: "text/csv"});
                // Download link
                downloadLink = document.createElement("a");
                // File name
                downloadLink.download = filename;
                // Create a link to the file
                downloadLink.href = window.URL.createObjectURL(csvFile);
                // Hide download link
                downloadLink.style.display = "none";
                // Add the link to DOM
                document.body.appendChild(downloadLink);
                // Click download link
                downloadLink.click();
            }
/* W3.CSS 4.13 June 2019 by Jan Egil and Borge Refsnes */
            html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}
            .w3-container:after,.w3-container:before,.w3-panel:after,.w3-panel:before,.w3-row:after,.w3-row:before,.w3-row-padding:after,.w3-row-padding:before,
            .w3-container,.w3-panel{padding:0.01em 16px}.w3-panel{margin-top:16px;margin-bottom:16px}
            table {
              font-family: arial, sans-serif;
              border-collapse: collapse;
              width: 100%;
            }

            td, th {
              border: 1px solid #dddddd;
              text-align: left;
              padding: 8px;
            }

            tr:nth-child(even) {
              background-color: white;
            }
            tr:nth-child(odd) {
              background-color: white;
            }
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
        <meta name="google" content="notranslate">        
        <meta name="viewport" content="width=device-width, initial-scale=1">
    </head> 
    <body>    
        <div class="w3-container w3-orange" >
             <h2 class="w3-animate-left">Server Table</h2>
       
              <table id="bob">
                      <tr>
                        <th>Process Number</th>
                        <th>Connection String</th>
                        <th>Database Name</th>
                        <th>Table Name</th>
                        <th>Run Status</th>
                      </tr>
                      <tr>
                        <td>1</td>
                        <td>Server1,1433</td>
                        <td>tempdb</td>
                        <td>Table1</td>
                        <td>Pass</td>
                      </tr>
                      <tr>
                        <td>2</td>
                        <td>Server2,1433</td>
                        <td>tempdb</td>
                        <td>Table3</td>
                        <td>Pass</td>
                      </tr>
                    </table>
                <p></p>
            <p></p>
            <button onclick="exportTableToCSV('Server_Data.csv')">Export Results To CSV File</button>
     
        </div>
</body></html>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将包含数字和文本列的数据导出到Matlab中的csv文件中?

来自分类Dev

如何将包含+1.048.576行的一个数据框导出到多个Excel文件/表格

来自分类Dev

如何将表格数据导出到txt(或)csv文件?只有最后一个查询结果集被导出到文件中?

来自分类Dev

BigQuery将表格导出到CSV文件

来自分类Dev

如何将PostgreSQL查询输出导出到csv文件

来自分类Dev

Postgresql:如何将表导出到单独的csv文件

来自分类Dev

如何将gatling日志文件导出到csv

来自分类Dev

如何将混合类型对象导出到csv文件?

来自分类Dev

如何将多行导出到 csv 文件

来自分类Dev

对于每个循环,如何将数据导出到CSV文件中的新行?

来自分类Dev

如何将终端上的数据值导出到Bash中的CSV文件

来自分类Dev

如何将PostgreSQL中的结果数据导出到.CSV?

来自分类Dev

Alasql如何将数据导出到CSV

来自分类Dev

如何将Nagios数据导出到CSV?

来自分类Dev

Alasql如何将数据导出到CSV

来自分类Dev

如何将TensorFlow培训数据导出到CSV

来自分类Dev

如何将大型数据集从R导出到CSV?

来自分类Dev

Alasql如何将数据导出到CSV

来自分类Dev

将大数据导出到CSV文件

来自分类Dev

将数据从Cassandra导出到CSV文件

来自分类Dev

将大数据导出到CSV文件

来自分类Dev

将数据导出到CSV文件

来自分类Dev

将TableView数据导出到CSV文件

来自分类Dev

如何使用Java将数据从Cassandra导出到CSV文件

来自分类Dev

如何使用jdbc将数据从Postgresql导出到.csv文件?

来自分类Dev

将HTML表格导出到Excel文件

来自分类Dev

如何将包含逗号的值写入csv文件?

来自分类Dev

数据表,将数据表导出到列值带有逗号的CSV文件

来自分类Dev

如何将 HTML 表格导出或转换为 CSV?

Related 相关文章

热门标签

归档