Il plug-in Table2excel non funziona

Sto lavorando a un’app dashboard e vorrei implementare la funzione “download table as .xls”.

Su questo link puoi vedere come la tabella assomiglia al dashboard

Ho trovato una libreria che include anche il tutorial che spiega la configurazione. Come puoi vedere nel codice qui sotto ho fatto più o meno tutto come è stato spiegato. Tuttavia non funziona e per qualche motivo la tabella non verrà esportata.

Come puoi vedere, ho incluso jquery.table2excel.js nelle risorse insieme a tutte le altre risorse utilizzate per questa pagina. Ho anche controllato se il file .js è disponibile dopo che la pagina è stata caricata e sembra anche buona.

Ho anche provato questo

  $(function () { document.getElementById('btnExport').addEventListener("click", function () { document.getElementById('myTable').table2excel({ exclude: ".noExl", name: "Excel Document Name", filename: "myFileName" }); }); }); 

ma non ha un bell’aspetto e quando eseguo la funzione ottengo questo messaggio nella console di debug

TypeError: document.getElementById(...).table2excel is not a function

Ecco come appare il mio index.jsp al momento

          KPI Admin <link href="" rel="stylesheet"> <link href="" rel="stylesheet">  <script src=""> <script src=""> <script src=""> <script src=""> <script src="">  $(function () { document.getElementById('btnExport').addEventListener("click", function () { $(".table2excel").table2excel({ exclude: ".noExl", name: "Excel Document Name", filename: "myFileName" }); }); });     

Name Last import Last value Values Targets Score Action
DTD WTD MTD YTD 0 100 150 WTD MTD YTD

Non sono davvero sicuro di cosa potrebbe causare questo problema o ho un errore nella syntax jQuery. Potrebbe anche essere che la lib non sia inserita correttamente nella pagina .jsp ma questo è il modo in cui ha funzionato per me in passato. Immagino che sto usando la giusta versione di jQuery datePicker quando jQuery datePicker funziona bene.

Se sei in grado di vedere quale potrebbe essere il caso, ti prego di aiutarmi a risolverlo. Se hai un’idea migliore su come esportare una tabella come file Excel, ti preghiamo di suggerire.

Grazie in anticipo.

Modifica 1:

Ho cambiato la funzione e sembra il codice che ho postato qui sotto. Se console.log("exporting..."); prima o dopo $(".table2excel").table2excel({ ... }); “exporing …” verrà stampato nella console. Ovviamente questo esclude jQuery come potenziale causa del problema.

  $(function () { $('#btnExport').click(function () { console.log("exporting..."); $(".table2excel").table2excel({ exclude: ".noExl", name: "Excel Document Name", filename: "myFileName" }); }); });  

Modifica 2:

Dal momento che non ero in grado di risolvere il problema, ho provato a provare qualcosa di nuovo. Ho trovato queste soluzioni e funziona, ma non ancora come mi piacerebbe davvero, quindi spero che tu possa aiutarmi a migliorarlo.

Il mio tavolo sembra così Tabella in html

e questo è ciò che ottengo di conseguenza Tabella in Excel

Prima di tutto sembra davvero strano senza Excel, hai un’idea per cui il file viene esportato senza di esso e come posso aggiungerlo?

In secondo luogo vorrei rimuovere la colonna dopo l’anno in cui vengono presentate le informazioni aggiuntive. È in qualche modo ansible regolare tab_text.replace(...) qui sotto per ottenere questo

in html sembra così

   info  Service Engineer: ... 
Datasource: ...

La funzione JavaScript ha questo aspetto

 function exportExcelReport(tblId) { var tab_text = ""; var table = document.getElementById(tblId); var style; for (var j = 0; j < table.rows.length; j++) { style = table.rows[j].className.split(" "); if (style.length < 2) tab_text = tab_text + table.rows[j].innerHTML + ""; } tab_text = tab_text + "
"; tab_text = tab_text.replace(/]*>|/g, ""); tab_text = tab_text.replace(/]*>/gi, ""); tab_text = tab_text.replace(/]*>|/gi, ""); return window.open('data:application/vnd.ms-excel,' + encodeURIComponent(tab_text)); }

Grazie!

aggiungere questo prima del ritorno

 tab_text = tab_text.replace(//gi, ""); 

puoi giocare attorno alla stringa nella sostituzione (prima della virgola) su questo sito: regexr.com

maggiori informazioni sulla partita multilinea qui

Assicurati che il riferimento allo script per il tuo plug-in sia successivo a quello di jQuery e verifica che entrambi siano inclusi prima del tuo codice js.

     人数统计     
a b c d e
f g h i j k l m n o p q l r s t u v w x 1 2 3 4 5 6 z 7 8 9 y z 7 8 9 z
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0