导出CSV数据表时,我没有得到多个标题,我在JavaScript中只得到标题的第二行

ht4b089n  于 2023-04-27  发布在  Java
关注(0)|答案(1)|浏览(107)

嗨,我正在使用jQuery Datatables。我试图导出CSV Datatable多个标题行,但没有得到。但它只导出第二个标题行。我正在使用按钮:

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

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

我的table结构是这样的

<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>
mqxuamgl

mqxuamgl1#

最简单的方法是编写一个硬编码的CSV字符串,表示第一个标题行-因此在您的情况下:

"","","Allotted","","Vacant","","Amenities","","Total",""\r\n

注意回车和换行符在结尾\r\n
您可以在JavaScript字符串中使用它,并使用customize函数将其前置到主CSV导出数据:

$(document).ready(function() {

  $('#example').DataTable( {
    dom: 'Bfrtip',
    buttons: [{
      extend: 'csvHtml5',
      header: true,
      customize: function ( csvData, btn, tbl ) {
        let firstHeader = '"","","Allotted","","Vacant","","Amenities","","Total",""\r\n'
        return firstHeader + csvData;
      }
    }
    }],
  } );

} );

警告:

然而我不得不说,在CSV文本文件中有两个标题记录通常不是一个好主意(在我看来)。如果你想自动处理这个CSV文件,有2个标题行将需要一些额外的工作。
此外,如果有人想在Excel中打开CSV文件,他们不会看到HTML表中的合并单元格-因为CSV文件只是一个文本文件,它没有合并单元格或colspan的概念。

附加说明:

确保您使用的是最新版本的DataTables -支持csvHtml5的版本。
如果您还没有相关的最新Buttons库,您也可以从DataTables downloads页面获得它。

相关问题