2012-06-18 10 views
13

Ho la seguente funzione che esporta un HTML per eccellere:Esporta HTML di funzione di Excel JavaScript aggiungere selezionare il nome del file

function generateexcel(tableid) { 
    var table= document.getElementById(tableid); 
    var html = table.outerHTML; 
    window.open('data:application/vnd.ms-excel,' + encodeURIComponent(html)); 
} 

il problema è che, non posso mettere un nome di file specifico per salvare come quindi l'utente ottiene qualcosa del tipo:

Vuoi salvare% 3Ctable% 20id% 3D% 22tableRslts% 22% 20tabindex% 3D% 2235% 22% 20 file?

e il file salvato è come:

IytvT8Jo.xls.part.xls (almeno in Firefox, che è il browser di destinazione che verrà utilizzato)

Come ti risolvere questo problema?

+0

È proprio vero che Excel importa direttamente una tabella HTML? Comunque hai provato a dare un nome alla finestra (secondo parametro a 'window.open()'? (* Edit * well gnumeric consumerà tranquillamente un tavolo, quindi suppongo che anche Excel lo farà.) – Pointy

+0

Deve essere vero se sto già usando questo script: P se non ho un grosso problema alle mani ... riguardo al nome della finestra l'ho provato ora senza successo ma grazie per la punta comunque ... – VSP

+0

Non lo farebbe [questo] (http://stackoverflow.com/questions/1479020/save-the-document-generated-by-javascript) help? –

risposta

3

ci sono due opzioni che si potrebbe guardare in:

  • Filesaver API è la nuova funzionalità 'HTML5' permettendo/esattamente/questo. C'è solo un piccolo problema: la parte rilevante non è ancora supportata in firefox. Se vuoi usarlo, c'è una bella libreria wrapper che ti semplifica le cose: filesaver.js
  • Downloadify è uno strumento flash che è stato creato esattamente per questo, lo puoi trovare qui. ('Svantaggio': flash)
+0

Ho provato la pagina demo di filesaver.js, ha funzionato bene con chrome, in firefox (14.0.1) ha solo aperto una nuova scheda con i contenuti ... ed essendo Firefox la nostra piattaforma target .... Downloadify ha funzionato bene in Firefox ma dovrò provare a implementarlo nel nostro sito per vedere se è fattibile (asp.net + ajax.net + ci sono più tabelle a cui abbiamo aggiunto l'esportazione come pulsante excel accanto a ciascuna dinamicamente da javascript) – VSP

+0

Sì, è per questo che ho detto 'la parte rilevante non è ancora supportata in firefox' @ filesaver. Ma per quanto ne so, lo scaricamento dovrebbe funzionare perfettamente. –

1

Non sono sicuro di averlo già fatto. Potrebbe essere necessario per gestire qualcosa come questo qui sotto nella tua pagina aspx:

$(window).load(function(){ 
$("#clickExcel").click(function() { 
var dtltbl = $('#dtltbl').html(); `enter code here` 
window.open('data:application/vnd.ms-excel,' + $('#dtltbl').html()); 
}); 
});//]]> 

Nella sopra #dtltbl script è la tabella ID.

Il seguente codice deve essere presente nel codice lato server, quindi il problema verrà risolto.

  Response.AddHeader("Content-Disposition", "attachment;filename=myfilename.csv"); 
+0

Controlla anche [questo collegamento] (http://stackoverflow.com/questions/393647/response-content-type-as-csv) potrebbe essere utile a te. –

+0

Il problema con questo è che è necessario effettuare un postback sul server per aggiungere l'intestazione. L'idea di utilizzare questa funzione è generare l'excel dal client direttamente attraverso javascript – VSP

+0

Ciò fornisce un'analisi corretta sulla gestione dell'esportazione senza codice lato server, vedere se soddisfa i requisiti requriements http: // stackoverflow.com/domande/3286423/è-da-possibile-per-use-qualsiasi-HTML5-fanciness-to-export-locale-storage-to-Excel –

Problemi correlati