下载数据到CSV文件- JavaScript

wqlqzqxt  于 5个月前  发布在  Java
关注(0)|答案(3)|浏览(61)

我们准备了以下脚本将数据下载到CSV文件中:

// Variable to store the final csv data
    var csv = [];
    // Get each row data
    var rows = document.querySelectorAll("table tr");
    // Get each column data
    for(var i = 1; i < rows.length; i++){
            // Stores each csv row data
            var row = [], cols = rows[i].querySelectorAll("td,th");
            for(var j = 0; j < cols.length; j++){
                // Get the text data of each cell
                // of a row and push it to csvrow
                row.push('"' + cols[j].innerText.trim() + '"');                
            }
            // Combine each column value with comma
            csv.push(row.join(",") + "\n");
    }

字符串
问题是我们在每一行的开头都有一个逗号。你能告诉我们如何修复我们的代码来删除这个逗号吗?谢谢!示例输出:

"Host","Version","Country","Brand","Store"
,"test1","5.2","MX","brand","1234"
,"test2","5.2","CA","brand","4321"
,"test3","5.2","US","brand","4444"


所需输出:

"Host","Version","Country","Brand","Store"
"test1","5.2","MX","brand","1234"
"test2","5.2","CA","brand","4321"
"test3","5.2","US","brand","4444"

r6vfmomb

r6vfmomb1#

您看到的逗号可能是列表中的逗号。
你可以用这个不带逗号的

let csvRawData = csv.join('');
console.log(csvRawData);

字符串

ht4b089n

ht4b089n2#

你所面临的问题是由于你在row.push语句中的每个列值之前添加了一个逗号。要解决这个问题,你可以修改代码以不同的方式处理第一列,确保每行的第一个值之前没有添加逗号。
尝试使用

row.push(j === 0 ? '"' + cols[j].innerText.trim() + '"' : ',"' + cols[j].innerText.trim() + '"')

字符串
而不是

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

jk9hmnmh

jk9hmnmh3#

你的推送是在
这个简单多了

const csv = [...document.querySelectorAll("table tr")]
  .map(row => [...row.querySelectorAll("td,th")]
    .map(cell => `"${cell.textContent.trim().replace(/"/g,'""')}"`)
    .join(',')) // cells
  .join('\n');   // rows
console.log(csv);

个字符

相关问题