tablas - Exportar tabla html dinámica para sobresalir en javascript en el navegador Firefox
tablas dinamicas html javascript (4)
AFAIK no existe una biblioteca para crear un archivo de Excel real en JavaScript, pero puede intentar exportar la tabla en HTML a un archivo con la extensión .xls.
¿Quiere exportar la tabla html dinámica para sobresalir en javascript? ¿Hay alguna manera de hacerlo en el navegador Firefox sin usar el objeto ActiveX en el código. Por favor, ayúdenme
Hay una extensión table2clipboard para firefox. También puede generar la salida csv desde el árbol DOM manualmente y dejar que el usuario la guarde como un archivo csv. Excel puede importar desde CSV.
Puede generar dinámicamente el archivo de Excel en formato SpreadsheetDataXML, que le permite personalizar la tabla, los estilos de celda y el formato en sintaxis HTML.
Para que esto funcione en IE, deberá usar el objeto Blob y luego llamar al método msSaveBlob. Para FF y Chrome, solo puede cambiar los datos de href a data: application / vnd.ms-excel
function fnExcelReport() {
var tab_text = ''<html xmlns:x="urn:schemas-microsoft-com:office:excel">'';
tab_text = tab_text + ''<head><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>'';
tab_text = tab_text + ''<x:Name>Test Sheet</x:Name>'';
tab_text = tab_text + ''<x:WorksheetOptions><x:Panes></x:Panes></x:WorksheetOptions></x:ExcelWorksheet>'';
tab_text = tab_text + ''</x:ExcelWorksheets></x:ExcelWorkbook></xml></head><body>'';
tab_text = tab_text + "<table border=''1px''>";
tab_text = tab_text + $(''#myTable'').html();
tab_text = tab_text + ''</table></body></html>'';
var data_type = ''data:application/vnd.ms-excel'';
var ua = window.navigator.userAgent;
var msie = ua.indexOf("MSIE ");
if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv/:11/./)) {
if (window.navigator.msSaveBlob) {
var blob = new Blob([tab_text], {
type: "application/csv;charset=utf-8;"
});
navigator.msSaveBlob(blob, ''Test file.xls'');
}
} else {
$(''#test'').attr(''href'', data_type + '', '' + encodeURIComponent(tab_text));
$(''#test'').attr(''download'', ''Test file.xls'');
}
}
Ejemplo de trabajo: http://jsfiddle.net/h42y4ke2/21/ YT tutorial: https://www.youtube.com/watch?v=gx_yGY6NHkc
Aquí hay una función para hacer esto en Firefox con JavaScript, asumiendo que el usuario tiene Excel instalado en su máquina:
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) {
if (!table.nodeType) table = document.getElementById(table)
var ctx = {worksheet: name || ''Worksheet'', table: table.innerHTML}
window.location.href = uri + base64(format(template, ctx))
}
})()
Ejemplo de Live jsFiddle: