如何在 jQuery 数据表中导出多行标题?

2023-12-24

嗨,我正在使用 jQuery数据表 https://datatables.net1.10.我正在尝试导出数据表多个标题行,但没有得到。但它仅导出第二个标题行。我正在使用按钮:

 buttons: [{
        extend: 'excel',
        header: true

    }, {
        extend: 'print',
        header: true
    }],

我的表结构如下

<table id="example" style="color: black;" class="display compact cell-border" cellspacing="0">
    <thead>
        <tr>
            <th rowspan="2">Sl.No</th>
            <th rowspan="2">Zone</th>
            <th colspan="2">Allotted</th>
            <th colspan="2">Vacant</th>
            <th colspan="2">Amenities</th>
            <th colspan="2">Total</th>
        </tr>
        <tr>
            <th>No Of Plots</th>
            <th>Area</th>
            <th>No Of Plots</th>
            <th>Area</th>
            <th>No Of Plots</th>
            <th>Area</th>
            <th>No Of Plots</th>
            <th>Area</th>
        </tr>
    </thead>
</table>                           

其中提到的DataTable论坛上的解决方案 https://datatables.net/forums/discussion/22592/export-multiple-row-headers不适用于最新版本。我以适合我的方式对其进行了调整。我向buttons.html5.js添加了一个本地函数:

var _fnGetHeaders = function(dt) {
    var thRows = $(dt.header()[0]).children();
    var numRows = thRows.length;
    var matrix = [];

    // Iterate over each row of the header and add information to matrix.
    for ( var rowIdx = 0;  rowIdx < numRows;  rowIdx++ ) {
        var $row = $(thRows[rowIdx]);

        // Iterate over actual columns specified in this row.
        var $ths = $row.children("th");
        for ( var colIdx = 0;  colIdx < $ths.length;  colIdx++ )
        {
            var $th = $($ths.get(colIdx));
            var colspan = $th.attr("colspan") || 1;
            var rowspan = $th.attr("rowspan") || 1;
            var colCount = 0;

            // ----- add this cell's title to the matrix
            if (matrix[rowIdx] === undefined) {
                matrix[rowIdx] = [];  // create array for this row
            }
            // find 1st empty cell
            for ( var j = 0;  j < (matrix[rowIdx]).length;  j++, colCount++ ) {
                if ( matrix[rowIdx][j] === "PLACEHOLDER" ) {
                    break;
                }
            }
            var myColCount = colCount;
            matrix[rowIdx][colCount++] = $th.text();

            // ----- If title cell has colspan, add empty titles for extra cell width.
            for ( var j = 1;  j < colspan;  j++ ) {
                matrix[rowIdx][colCount++] = "";
            }

            // ----- If title cell has rowspan, add empty titles for extra cell height.
            for ( var i = 1;  i < rowspan;  i++ ) {
                var thisRow = rowIdx+i;
                if ( matrix[thisRow] === undefined ) {
                    matrix[thisRow] = [];
                }
                // First add placeholder text for any previous columns.                 
                for ( var j = (matrix[thisRow]).length;  j < myColCount;  j++ ) {
                    matrix[thisRow][j] = "PLACEHOLDER";
                }
                for ( var j = 0;  j < colspan;  j++ ) {  // and empty for my columns
                    matrix[thisRow][myColCount+j] = "";
                }
            }
        }
    }

    return matrix;
};

然后我改变了代码DataTable.ext.buttons.excelHtml5在同一文件中:

    if ( config.header ) {
                /* ----- BEGIN changed Code ----- */ 
                var headerMatrix = _fnGetHeaders(dt);
                for ( var rowIdx = 0;  rowIdx < headerMatrix.length;  rowIdx++ ) {
                    addRow( headerMatrix[rowIdx], rowPos );
                }
                /* ----- OLD Code that is replaced: ----- */    
                //addRow( data.header, rowPos );
                /* ----- END changed Code ----- */  
                $('row c', rels).attr( 's', '2' ); // bold
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 jQuery 数据表中导出多行标题? 的相关文章

  • 如何使用 JavaScript 中的值填充下拉列表?

    我在 Tridion CMS 扩展中的功能区工具栏按钮中添加了一个按钮 单击该按钮后 将显示一个弹出页面 其中包含两个下拉菜单 通过更改第一个下拉控件中的值 我应该填充第二个下拉控件的值 就我而言 我正在使用ASP drop down li
  • jquery 验证错误位置

    这看起来很简单 但我无法弄清楚 我正在使用 jquery 验证插件 我验证所有文件 但我想要的是在输入文本行中显示验证消息警报 例如在电子邮件输入中 请填写电子邮件地址 但现在它出现在所有字段下 在我的html中
  • Jquery 中的动态滚动位置

    请帮助我解决以下情况 我有 3 个页面 当滚动到达第二页时 用户滚动页面 它必须找到特定的 ID 然后触发一个函数 一旦第三页开始 另一个函数就会触发 根据要求我不应该使用任何插件
  • 如何让 jquery Tooltipster 插件适用于新创建的 DOM 元素?

    我正在使用 Tooltipster 插件http calebjacob com tooltipster http calebjacob com tooltipster 这很棒 但我已经动态生成了插入到 DOM 中的内容 工具提示程序似乎没有
  • 显示覆盖以覆盖整个页面

    我有一个正在加载的网络应用程序iframe 我需要显示一个覆盖 div 来覆盖整个页面 问题是叠加层当前仅显示在iframe区域而不覆盖整个页面 我们的应用程序 子应用程序 是加载的一组应用程序的一部分iframe 你可以做这样的事情 di
  • XHR 不起作用,因为“Access-Control-Allow-Origin 不允许来源”

    我正在使用 Rails 3 开发一个 API 服务器 到目前为止 它非常方便 但我一直遇到错误 我不确定这是因为我的 Apache 设置还是 Rails 应用程序 当我尝试执行 HTTP DELETE 或 PUT 请求时http sampl
  • jQuery 的 ondragstart 事件

    我一直在尝试使用 Javascript 拖放 API var file document getElementById file file addEventListener dragstart function evt evt dataTr
  • jquery:$().animate() 不是函数

    我已经做了很多搜索 但无法找到我的问题的答案 所以这里是 我正在尝试创建一个滑出切换菜单本教程 http alijafarian com jquery horizontal slideout menu 我收到一个错误slideoutMenu
  • 如何在Jquery-Select2中设置多值选择中的选定值?

    我正在绑定我的下拉菜单Jquery Select2 它工作正常 但现在我需要绑定我的多值selectBox通过使用Jquery Select2 我的下拉菜单 div class divright div
  • jQuery:如何捕获文本框中的 TAB 按键

    我想捕获 TAB 按键 取消默认操作并调用我自己的 javascript 函数 Edit 由于您的元素是动态插入的 因此您必须使用委托的on http api jquery com on 如您的示例中所示 但您应该将其绑定到 keydown
  • 文件上传后如何隐藏上传按钮?

    我使用 blueimp 和 jquery UI 进行文件上传 我想在上传文件后隐藏此按钮 并在照片被删除时再次显示它 我该怎么做呢 这是我的 HTML
  • 如果我拒绝确认,如何防止更改选择框值

    我正在使用国家 地区选择框 当用户选择一个国家 地区时 会出现添加分支链接 并且用户在该国家 地区下添加分支 但是当用户想要更改国家 地区时 则应销毁有关该国家 地区的所有分支 在更改国家 地区之前 会出现一个确认框并显示警告 一切正常 但
  • jQuery 验证:如何不显示错误?或者如何将错误显示为工具提示?

    我希望我的错误浮动在未验证的输入字段上方 左对齐 我怎样才能做到这一点 如果不能 我怎样才能关闭错误 我仍然希望字段能够验证 并在错误时突出显示 但不希望显示实际的错误消息 我似乎无法在 jQuery 文档中找到任何可以让我打开 关闭它们的
  • jQuery 中的 Javascript .files[0] 属性

    jQuery 中是否有与此语句等效的语句 var value document getElementById id files 0 使用附加 files 0 的标准 jQuery 选择器似乎不起作用 并且我找不到与 files 等效的 jQ
  • 计算Javascript中两次点击之间的时间

    我想用 javascript 计算属性的两次点击之间的时间 但我不知道如何 例如 a href click here a 如果用户单击多次 假设 5 秒内 我想显示警报 如果有帮助的话我正在使用 jQuery 我对 javascript 不
  • 如何使用 jQuery 向表中添加新行,并为其分配递增的 id

    我有一个现有的 HTML 表格 它是用户输入 GPS 点的表单的一部分 用户还可以选择上传 GPS 数据点 我想要一个用户可以按下的按钮 其中一些 Javascript 会向表中添加一个或多个新行 但新行必须继续增加表中使用的名称和 id
  • jQuery 验证规则和消息 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我在设置 jQuery 验证的规则和
  • 将杂散文本包裹在 div 中

    如何选择 任何没有包含标签的内容 来在 jQuery 中添加包装器 前任 div class post div class whatever This should remain untouched div I want to wrap t
  • jQuery 选择下一个

    我有一个简单的div布局html 有一个函数 当鼠标悬停在className为 personal icon email 的div上时 我将调用JS函数并显示className为 img info mask 的隐藏div div class
  • 如何使 jQuery 向上动画

    我有一些 jquery 运行得相当好 但是当我将鼠标悬停在有问题的元素上时 底部向下扩展 这并不意外 但不是所需的效果 我希望元素的底部保持静止 而元素的顶部向上扩展 如果您想查看我目前拥有的内容 您可以导航至http demo ivann

随机推荐

  • @this到底有什么作用?

    据我所知 this表示当前触发事件的组件 如
  • C# Winforms:高效显示许多控件

    我正在构建一个包含 15x15 225 个按钮的控件 并且需要调整大小 因为它是一个网格 所以锚定和对接不起作用 我尝试过 TableLayoutPanel 以及处理调整大小事件以手动放置控件和调整控件大小 在这两种情况下 调整大小的速度都
  • 开发 Web 应用程序时,什么时候会使用图形数据库还是文档数据库?

    我正在使用 Rails 开发一个基于 Web 的应用程序 我正在争论是使用图形数据库 例如 InfoGrid 还是文档数据库 例如 MongoDB 我的应用程序需要存储小型数据集 例如 URL 和非常大的数据集 例如虚拟机 该数据将与单个用
  • Rails 3,测试方法太多?

    如果您刚刚开始使用 Rails 您会鼓励新用户走哪条路Testing 我读到的有关 Rails 3 的任何内容都告诉我我应该使用Rspec 2 但是 Rspec 附带了我需要学习的其他一些东西 比如 gem capybara gem dat
  • Opencv 如何在视频上叠加文本

    我想添加一些文本来显示在我的网络摄像头的视频上 但我似乎无法理解 我之前已经使用 Opencv 将文本添加到图像中 但视频的方法似乎有所不同 所以我将如何去做呢 这是我的网络摄像头脚本 import cv2 import numpy as
  • 通过Python插入远程Couchbase服务器

    我使用此代码将数据插入 Couchbase from couchbase import Couchbase c Couchbase connect host remote server com bucket default c set fi
  • SQL Server 2005 将变量设置为选择查询的结果

    如何在不使用存储过程的情况下将变量设置为选择查询的结果 我想做类似的事情 OO日期日期时间 SET OOdate Select OO Date FROM OLAP OutageHours as OO WHERE OO OutageID 1
  • 在二维数组的每行末尾附加一个列表

    我想在二维数组 a 的每行末尾附加一个列表 一维数组 b input a np array 1 1 2 2 3 3 b np array 4 4 期望输出 array 1 1 4 4 2 2 4 4 3 3 4 4 my code temp
  • Django:在每次启动时运行代码,但在数据库迁移之后

    我认为在最新版本的 Django 中有一个简单的答案 但我找不到它 我有涉及数据库的代码 我希望它在 Django 每次启动时运行 我似乎有两个选择 选项1 AppConfig ready 这可以工作 但也可以在创建数据库表之前运行 即在测
  • 承诺开始得太早

    我有以下承诺 const promise new Promise resolve reject gt setTimeout gt resolve Hello 4000 后来 我这样称呼它 promise then msg gt consol
  • MySQL 查询大数据时速度非常慢

    我不是 MySQL 高手 但我明白了 我刚刚继承了一个相当大的表 600 000 行和大约 90 列 请杀了我 并且我创建了一个较小的表来将其链接到类别表 我正在尝试使用左连接查询所述表 因此我在一个对象中拥有两组数据 但它运行速度非常慢
  • 删除neo4j 1.8中的所有节点和关系

    我知道这个问题已经被很多人问过为了我的研究 这里有一些之前问过的问题 如何删除neo4j图中的所有关系 https stackoverflow com questions 12899538 how to delete all relatio
  • 400 错误请求:未知字段“类型”

    我已经按照描述在 Tomcat 上设置了 Solr 3 6 2here http wiki apache org solr SolrTomcat 使用 sunspot rails gem 和嵌入式 solr 服务器我没有任何问题 但在我的临
  • null + true 怎么是字符串?

    Since true不是字符串类型 怎么办null true一个字符串 string s true Cannot implicitly convert type bool to string bool b null true Cannot
  • %g printf 说明符到底是什么意思?

    The g说明符的行为似乎与大多数来源记录的行为方式不同 根据我发现的大多数来源 在使用的多种语言中printf指定者 g说明符应该等同于 f or e 对于所提供的值 哪个会产生更短的输出 例如 在写这个问题时 cplusplus com
  • Tortoisesvn隐藏svn文件夹

    当我需要将网络解决方案上传到服务器时 它们特别烦人 有没有办法配置 SVN 在我的工作目录之外创建 svn 文件夹 如果没有 当您只需要复制代码时处理它们的最佳方法是什么 Update 使用 svn导出 命令是有问题的 因为有些文件不受源代
  • 发布的 asp.net 站点返回解决方案

    我在服务器上有一个已发布的 asp net 网站 我需要将其返回到解决方案中进行编辑等 是否有任何工具可以为我提供解决方案 Ilspy http ilspy net 没有为我这样做 提前致谢 您应该寻找 Net 反编译工具 NET Fram
  • PerformSegueWithIdentifier 的调用顺序

    当我打电话时performSegueWithIdentifier 我压倒一切prepareForSegue 之后为了在我的目标视图控制器上设置一些属性 但是 我试图了解此处的操作顺序以确保其安全 我使用以下方法实例化目标视图控制器 MyVi
  • Android - 防止人们改变音量

    如果可能的话 如何才能使只要打开应用程序 就不允许用户更改设备的音量 我发现您可以使用 AudioManger 将音量设置为静音 AudioManager volumeControl AudioManager getSystemServic
  • 如何在 jQuery 数据表中导出多行标题?

    嗨 我正在使用 jQuery数据表 https datatables net1 10 我正在尝试导出数据表多个标题行 但没有得到 但它仅导出第二个标题行 我正在使用按钮 buttons extend excel header true ex