javascript Datatable.net 内置自动换行样式

7bsow1i6  于 2023-05-27  发布在  Java
关注(0)|答案(1)|浏览(128)

我正在使用Datatable.net,并希望我的excel导出到Word Wrap。我尝试使用$(this).attr('s ',55);就像这个https://datatables.net/reference/button/excelHtml5#Built-in-styles。我也试过设置宽度,看看是否有帮助。我也试着补充说:“但没有任何工作。
JS代码

$(tableId).DataTable({
    "lengthMenu": [
       [10, 15, 20, -1],
       [10, 15, 20, "All"]
     ],
    "pageLength": -1,
    scrollX: true,
    buttons: [
    {
       extend: 'excelHtml5',
       title: "Individual Report - " + moment().format('MM-DD-YYYY'),
           customize: function (xlsx) {
              var sheet = xlsx.xl.worksheets["sheet1.xml"];
              var col = $("col", sheet);
              col.each(function () {
                 $(this).attr('s', 55);
                 $(this).attr('width', 33);
              });

        }
     }
   ]
 );
mwkjh3gx

mwkjh3gx1#

您用于内置样式的选择器需要从以下内容进行调整:

$(this).attr('s', 55);

对此:

$('row c', sheet).attr( 's', '55' );

$("col", sheet)选择器用于工作表XML中的<cols>标记-例如:

<cols>
    <col min="1" max="1" width="18.85546875" customWidth="1"/>
    <col min="2" max="2" width="24.28515625" customWidth="1"/>
</cols>

这对于设置宽度是正确的。
但是对于style s属性,您需要以<c>标记为目标-例如:

<row r="2" spans="1:2">
    <c r="A2" t="s">
        <v>2</v>
    </c>
    <c r="B2" t="s">
        <v>3</v>
    </c>
</row>

下面是一些演示代码(它不会在堆栈片段中生成Excel,所以下面是核心代码):

$(document).ready(function() {

  var table = $('#example').DataTable( {
    dom: 'Bfrtip',
    buttons: [
      {
        extend: 'excelHtml5',
        text: 'Save as Excel',
        title: '',
        customize: function( xlsx ) {
          var sheet = xlsx.xl.worksheets['sheet1.xml'];
          $('row c', sheet).attr( 's', '55' );
          var col = $("col", sheet);
          col.each(function () {
            $(this).attr('width', 15);
          });
        }
      }
    ]
  } );

} );

最后的结果(用我的测试数据):

相关问题