我有这个有效的 jquery 函数,但我需要添加一些东西。我在桌子上设置了一个过滤器来隐藏列。当我隐藏列并单击导出时,它无论如何都会使用所有字段。如何只导出未隐藏的表列?
var write_to_excel = (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))
}
})()
我想我需要类似的东西。
if($(table).display.style!="none")
提前致谢。
最简单的方法是在将表传递给格式函数之前从表中删除列。由于您无论如何都会丢弃页面来导航到数据 URI,因此保留隐藏列并不重要。
删除隐藏列的方式取决于最初隐藏列的方式。如果只是将 display:none 应用于隐藏的 TD,则可以通过对代码进行此更改来实现。
return function(table, name) {
if (!table.nodeType)
table = document.getElementById(table);
$(table).find(':not(:visible)').remove();
var ctx = {
worksheet: name || 'Worksheet',
table: table.innerHTML
};
window.location.href = uri + base64(format(template, ctx));
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)