Datatables / TableTools:将数据格式化为文本,以便导出到Excel。

5 浏览
0 Comments

Datatables / TableTools:将数据格式化为文本,以便导出到Excel。

我在使用Datatables TableTools插件,以提供一个导出Excel选项给我的一个页面上的表格。

总的来说,一切都按预期工作。

我唯一的问题是,我需要所有的数据或者说是导出的Excel表格中的列被格式化为文本,否则一些列中的数据会被删除。

例子:

- 我有一个带有前导零的列(例如0022),如果不格式化为文本,那么在Excel文件中只显示去掉前导零的数字(例如22)。

- 另一个列包含19位长的账号号码(例如1234567890123456789),如果不格式化为文本,在Excel文件中会显示最后四位数字被改为零的结果(例如1234567890123450000)。

有没有办法在我的Datatables / TableTools初始化中设置,以便它始终将所有数据导出为文本格式到Excel文件中?

非常感谢您对此的帮助,谢谢,Tim。

admin 更改状态以发布 2023年5月21日
0
0 Comments

我有解决这个问题的方法。

这个问题困扰了我很长时间...下面是解释:

  1. 在DatatableJS版本1.10.11中解决很好(用于HTML Excel导出选项)
  2. 打开datatables.js文件并搜索此内容: "DataTable.ext.buttons.excelHtml5 = {"
  3. 查找以下行直到找到此代码并将其注释:

             cells.push( typeof row[i] === 'number' || (row[i].match && $.trim(row[i]).match(/^-?\d+(\.\d+)?$/) && row[i].charAt(0) !== '0') ?
                ''+row[i]+'' :
                ''+(
                    ! row[i].replace ?
                        row[i] :
                        row[i]
                            .replace(/&(?!amp;)/g, '&')
                            .replace(//g, '>')
                            .replace(/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F-\x9F]/g, ''))+ // remove control characters
                ''                                                      // they are not valid in XML
            );
    

  4. 放入新代码:

                cells.push( ''+(
                            ! row[i].replace ?
                                row[i] :
                                row[i]
                                    .replace(/&(?!amp;)/g, '&')
                                    .replace(//g, '>')
                                    .replace(/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F-\x9F]/g, ''))+ // remove control characters
                        ''                                                      // they are not valid in XML
                    );
    

  5. 保存datatables.js文件

  6. 享受您的神圣文本单元格!

此解决方案可帮助保持数字、日期和小数格式。

我改变了代码,强制将来自HTML到XLSX的所有值都写在文本格式中。

如果有人对此解决方案有问题,我会尽力回答所有问题。

感谢所有人。

0
0 Comments

我尝试了Aureltime提供的第一种选项,但我发现有一个小的副作用。如果该列仅包含数字并且使用渲染函数,则排序选项不起作用。幸运的是,从1.10.12 datatables版本开始,有一个新选项可以在创建Excel文件之前自定义数据。

在此自定义函数中,我添加了/u002C并且它完美地工作,甚至对数字进行排序。

        "buttons": [{
            extend: 'excel',
            exportOptions: {
                orthogonal: 'sort'
            },
            customizeData: function ( data ) {
                for (var i=0; i

0