2015-05-26 14 views
8

Istnieje wiele sposobów, aby wyeksportować tabelę HTML do programu Excel, ale co JTable gdyż nie zawiera tagów html jak <table> na stronie, to po prostu wywołuje przez id jak <div id="table"></div>Export JTable excel w JavaScript w IE

mam proste rozwiązanie, które działa w Chrome, ale nie działa na IE

Buttona do wywozu:

<a id="dlink" onclick="tableToExcel('StudentTableContainer', 'name', 'TestExcelFile.xls')">Export to excel</a> 

JTable:

<div id="StudentTableContainer"></div> 

Javascript:

var tableToExcel = (function() { 
    var uri = 'data:application/vnd.ms-excel;base64,' 
    , template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>' 
    , base64 = function (s) { return window.btoa(unescape(encodeURIComponent(s))) } 
    , format = function (s, c) { return s.replace(/{(\w+)}/g, function (m, p) { return c[p]; }) } 
    return function (table, name, filename) { 
     if (!table.nodeType) table = document.getElementById(table) 
     var ctx = { worksheet: name || 'Worksheet', table: table.innerHTML } 

     document.getElementById("dlink").href = uri + base64(format(template, ctx)); 
     document.getElementById("dlink").download = filename; 
     document.getElementById("dlink").click(); 

    } 
})() 
  • możemy uczynić go używać na IE?
  • Jak wyświetlić wszystkie wartości tabeli ? (Tak jak to eksport rozwiązanie wyświetlane tylko wiersze na stronie)

Używam VB.NET aby uzyskać wartości SQL dla JTable

+0

Czy Twój identyfikator div ma "StudentTableContainer" lub "table"? – cha

+0

tabela jest generowana w pliku JavaScript. Po prostu dzwonię do id w div – Elyor

+0

Czy próbowałeś [tego rozwiązania] (http://stackoverflow.com/questions/22709029/export-the-html-table-to-excel-is-not-working-in-ie)? – ChicagoMike

Odpowiedz

1

Aby mieć wszystkie wiersze eksportowanych można utworzyć kolejną JTable bez stronicowania ładujesz tylko przed eksportowaniem, a który jest niewidoczny dla użytkownika końcowego. Powinno być coś takiego:

$('#PersonTable').jtable({ 
    //... 
    paging: false, //Set paging disabled 
    actions: { 
     //... 
    }, 
    fields: { 
     //... 
    } 
}); 

Po uzyskaniu pełnej JTable można wyeksportować go z roztworu z this forum. Możesz określić w tej drugiej jtable tylko kolumny, które chcesz wyeksportować w programie Excel.