2017-08-11 3 views
0

Je tente de télécharger un rapport CSV en utilisant Javascript. Cependant, je suis confronté à des problèmes d'encodage en CSV. Je reçois & en tant que & ce qui suit est mon code JS. J'ai essayé des solutions de google mais en vain.Problème de codage dans CSV angulaire 2 avec ampersand

JSONToCSVConvertor(ReportTitle, ShowLabel) { 
    let csv = []; 

    var tableId = document.querySelector('table').getAttribute('id'); 

    var headers = document.querySelectorAll("table#"+tableId+" tr"); 

    for (var i = 0; i < headers.length; i++) { 

    var row = [], cols = headers[i].querySelectorAll("td, th"); 

    for (var j = 0; j < cols.length; j++) 

     row.push(cols[j].innerHTML); 


    csv.push(row.join(", ")); 

} 

this.downloadCSV(csv.join("\n"), sampleTitle); 

downloadCSV(csv, filename) { 
    var csvFile; 
    var downloadLink; 

    var uri = 'data:text/csv;charset=utf-8' + encodeURI(csv); 

// Download link 
    downloadLink = document.createElement("a"); 


    downloadLink.href = uri; 

    downloadLink.download = filename + ".csv"; 

    // Hide download link 
    downloadLink.style.display = "none"; 

    // Add the link to DOM 
    document.body.appendChild(downloadLink); 

    // Click download link 
    downloadLink.click(); 

    document.body.removeChild(downloadLink); 
} 

Comment obtenir les caractères spéciaux exacts dans CSV? De l'aide?

+0

'encodeURI' ne change pas' '& ... vous voulez peut-être' encodeURIComponent' –

Répondre

0

Je ne sais pas si cela est exagéré ...

function encodeRFC5987ValueChars(str) { 
    return window.encodeURIComponent(str) 
     .replace(/['()]/g, window.escape) 
     .replace(/\*/g, '%2A') 
     .replace(/%(?:7C|60|5E)/g, window.unescape); 
}