【问题标题】:line breaks in javascript generated csv for excel importjavascript中的换行符为excel导入生成csv
【发布时间】:2014-10-07 17:53:24
【问题描述】:

我在浏览器端(chrome windows)使用javascript从网页生成和下载CSV

function toCsv(arr){
    return arr.reduce(function(csvString, row){
        csvString += row.join(',') ;
    csvString += "\r\n";  //";";//"\n";
        return csvString;
    }, '');
}

function flowDataCsv(){
    document.location = 'data:Application/octet-stream,' + toCsv(flowDataGrid);
}

我曾尝试使用“;”、“\r\n”和“\n”来分隔行,但所有三个结果都导致 csv:s excel 导入一行而不是作为网格。我应该如何终止行以让 excel 将其识别为行尾并开始在新行上插入数据?

【问题讨论】:

    标签: javascript excel csv export-to-excel export-to-csv


    【解决方案1】:

    尝试使用\u2028 代替\n\u2029 代替\r

    源代码:https://github.com/zemirco/json2csv/issues/91#issuecomment-276555551

    【讨论】:

    • 你能解释一下为什么
    【解决方案2】:

    不确定您是否仍需要此问题的答案。但是会发布我遇到相同问题时找到的解决方案。

    使用上面的代码,您唯一缺少的就是对您的 toCsv 函数返回的 csv 字符串进行编码。在上面的代码中看起来像这样:

    function toCsv(arr){
        return arr.reduce(function(csvString, row){
            csvString += row.join(',') ;
        csvString += "\r\n";  //";";//"\n";
            return encodeURIComponent(csvString);
        }, '');
    }
    
    function flowDataCsv(){
        document.location = 'data:Application/octet-stream,' + toCsv(flowDataGrid);
    }
    

    希望这对以后再次遇到此问题的人有所帮助!

    【讨论】:

    • 未将 \n 转换为新行并扭曲浮点值。
    • 感谢您的回答。我试图解决这个问题但没有运气,但 encodeURIComponent 确实有效。
    猜你喜欢
    • 2010-09-18
    • 2012-01-27
    • 1970-01-01
    • 2020-03-25
    • 1970-01-01
    • 2017-12-19
    • 1970-01-01
    • 2014-10-02
    相关资源
    最近更新 更多