Ho una domanda simile a questa domanda (Javascript: Exporting large text/csv file crashes Google Chrome):come salvare .xlsx i dati in un file come un blob
Sto cercando di salvare i dati creati da excelbuilder.js 's EB.createFile()
funzione. Se metto i dati del file come valore dell'attributo href
di un collegamento, funziona. Tuttavia, quando i dati sono grandi, si blocca il browser Chrome. I codici sono come questo:
//generate a temp <a /> tag
var link = document.createElement("a");
link.href = 'data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,' + encodeURIComponent(data);
link.style = "visibility:hidden";
link.download = fileName;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
miei codici per creare i dati utilizzando excelbuilder.js è come segue:
var artistWorkbook = EB.createWorkbook();
var albumList = artistWorkbook.createWorksheet({name: 'Album List'});
albumList.setData(originalData);
artistWorkbook.addWorksheet(albumList);
var data = EB.createFile(artistWorkbook);
Come suggerito dalla risposta della domanda simile (Javascript: Exporting large text/csv file crashes Google Chrome), un blob ha bisogno di essere creato.
Il mio problema è, ciò che viene salvato nel file non è un file Excel valido che può essere aperto da Excel. I codici che uso per salvare il blob
è come questo:
var blob = new Blob(
[data],
{type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,"}
);
// Programatically create a link and click it:
var a = document.createElement("a");
a.href = URL.createObjectURL(blob);
a.download = fileName;
a.click();
Se sostituisce la [data]
nei codici di cui sopra con [Base64.decode(data)]
, il contenuto negli sguardi file salvato più come i dati previsti eccellere, ma ancora non può essere aperto da Excel.
Grazie!
non sembra funzionare con dati non elaborati (ad esempio il file excel restituito da un server così com'è). Infatti "s" restituisce undefined. qualche indizio? – dragonmnl
Grazie, ha funzionato perfettamente. – Dugh