jquery - 使用 jquery 将 html 表格转为 excel

标签 jquery excel hidden cells

我有这个有效的 jquery 函数,但我需要添加一些东西。我在 table 上设置了一个过滤器来隐藏列。当我隐藏列并单击导出时,它无论如何都会使用所有字段。如何只导出未隐藏的表格列?

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));
    };

关于jquery - 使用 jquery 将 html 表格转为 excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11301223/

相关文章:

php - 存在隐藏输入类型时不返回 POST 数据

c# - 如何重命名 "using Directive"C#

excel - 如何自动过滤然后仅复制和粘贴可见单元格

excel - 无模式表单上文本框输入的验证消息会中断文本选择

html - 使用 css/javascript 隐藏图像的一部分

jquery - 通过分页查找Gridview中Checkbox的状态

javascript - 为不同的父 div 滚动 Javascript 函数

c# - 如何在我的项目中使用 AntiXss?

javascript - 如何在 JS 中旋转图像后更改图像 css?

linux - 在 Linux 中将隐藏文件转换为普通文件