J'ai le code Javascript suivant pour exporter le fichier CSV du côté client. Cependant, Google Chrome se bloque chaque fois que j'essaie d'exporter un grand tableau. Quelle est la limite de la chaîne de données autorisée dans Chrome? Est-il possible qu'elle atteigne la limite de mémoire autorisée dans Chrome? Si la chaîne de données est trop longue pour Chrome, comment vais-je procéder pour exporter de gros fichiers CSV côté client?
var csvRows = [...]; //Array with 40000 items, each item is 100 characters long.
var csvString = csvRows.join("\r\n");
var a = document.createElement('a');
a.href = 'data:text/csv;charset=utf-8,' + encodeURIComponent(csvString);
a.target = '_blank';
a.download = 'export.csv';
document.body.appendChild(a);
a.click();
(La taille de fichier attendue est d'environ 6,4 Mo)
eu le même problème et l'a résolu en utilisant Blob .
Par exemple:
csvData = new Blob([csvString], { type: 'text/csv' });
var csvUrl = URL.createObjectURL(csvData);
a.href = csvUrl;
J'ai utilisé la fonction suivante pour télécharger CSV. A travaillé pour moi dans IE/Firefox/Chrome
function downloadFile(data, fileName) {
var csvData = data;
var blob = new Blob([ csvData ], {
type : "application/csv;charset=utf-8;"
});
if (window.navigator.msSaveBlob) {
// FOR IE BROWSER
navigator.msSaveBlob(blob, fileName);
} else {
// FOR OTHER BROWSERS
var link = document.createElement("a");
var csvUrl = URL.createObjectURL(blob);
link.href = csvUrl;
link.style = "visibility:hidden";
link.download = fileName;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
}