8

I generate and download a CSV from a webpage using javascript in the browser side (chrome windows)

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

i have tried delimiting lines with ";", "\r\n" and "\n" but all three results in csv:s that excel imports into one line instead of as a grid. How should i terminate the lines to get excel to recognize it as a line ending and start inserting data on a new line?

2 Answers 2

13

Not sure if you still need the answer to this question. But will post the solution I found as I experienced the same problem.

Using your code above the only thing you are missing is to encode your csv string returned by your toCsv function. This would look like this in your code above:

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

Hopefully this helps anyone who comes across this issue again in the future!

Sign up to request clarification or add additional context in comments.

2 Comments

not converting \n to new line and distorts float values.
Thanks for the answer. I was trying to solve this issue but had no luck, but encodeURIComponent really worked.
3

Try \u2028 instead of \n or \u2029 in place of \r.

src: https://github.com/zemirco/json2csv/issues/91#issuecomment-276555551

1 Comment

could you explain why

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.