Ho un app JavaScript e un'API che crea un file di Excel e restituisce un array di byte con le seguenti intestazioni:Scaricare il file Excel da server e risparmiare sui client
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Content-Disposition:attachment; filename=List.xlsx
Quando vado la risorsa URL API di Excel Mi viene richiesto di scaricare il file di Excel. Se lo faccio, si scarica e si apre in Excel. Va tutto bene.
Ora per il problema:
Quello che non voglio è di esporre l'URL API nella finestra del browser dell'utente, quindi il mio obiettivo è quello di:
- Scarica il file di Excel tramite la tecnologia AJAX XMLHttpRequest
- memorizzare il contenuto (array di byte) in un Blob
- Creare un data URI con il Blob
- aprire i dati URI in un pop-up, che richiede all'utente di scaricare il file Excel
Quello che ho è questa:
Si scarica il file, ma quando provo ad aprire il file, Excel non lo riconosce come un file Excel valido.
// "data" is the contents from the server
var reader = new FileReader();
var blob = new Blob([data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
reader.readAsDataURL(blob);
reader.onloadend = function (e) {
window.open(reader.result, 'Excel', 'width=20,height=10,toolbar=0,menubar=0,scrollbars=no', '_blank');
}
Questo bisogno di lavorare in IE? –
L'ho risolto (vedi risposta sotto), ma hai ragione, IE non supporta questo. Può essere reso disponibile per IE? – Gaui