.Net 使用javascript导出到CSV文件,并替换字符

问题描述 投票:0回答:1

我正在使用.NET 8.0。

我正在使用 javascript 将网格导出到 CSV 文件...

网格的一列具有该值

AAA;BBB;CCC 

当我导出到 CSV 时,我需要包含该值的单元格出现在同一单元格中的另一个单元格的下面,就像这样

Column1   Name       Value

1         apple         AAA
                        BBB
                        CCC
2         orange        DDD  

我在JS中有这个功能

function GenerateCSV(table_id, name) {
    // Select rows from table_id
    var rows = document.querySelectorAll('table#' + table_id + ' tr');
    // Construct csv
    var csv = [];
    for (var i = 0; i < rows.length; i++) {
        var row = [], cols = rows[i].querySelectorAll('td, th');
        for (var j = 0; j < cols.length; j++) {
            // Clean innertext to remove multiple spaces and jumpline (break csv)
            var data = cols[j].innerText.replace(/(\s\s)/gm, ' ').replace(";", "\r\n")
              row.push('"' + data + '"');
         }
        csv.push(row.join(','));
    }
    var csv_string = csv.join('\n');

    var filename = name + '.csv';
    var link = document.createElement('a');
    link.style.display = 'none';
    link.setAttribute('target', '_blank');
    link.setAttribute('href', 'data:text/csv;charset=utf-8,' + encodeURIComponent(csv_string));
    link.setAttribute('download', filename);
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);
}

在这一行

var data = cols[j].innerText.replace(/(\s\s)/gm, ' ').replace(";", "\r\n")

我正在替换“;”为了 ” ”

它成功了一半..它只是替换第一个字符

";"
而不是替换所有
";"
显示

 Column1   Name       Value
    
    1      apple         AAA
                         BBB;CCC

如何进行全线更换?

谢谢

javascript export-to-csv .net-8.0
1个回答
0
投票

只需将其替换为全局正则表达式搜索:

var data = cols[j].innerText.replace(/(\s\s)/gm, ' ').replace(/;/g, "\r\n")

请注意

\s\s
的含义,但将其保留在那里以防万一(我不知道数据的格式)

© www.soinside.com 2019 - 2024. All rights reserved.