【问题标题】:Export value with Linebreaks into single cell in Excel with jQuery Datatables 2016使用 jQuery Datatables 2016 将带有换行符的值导出到 Excel 中的单个单元格
【发布时间】:2016-06-16 03:40:51
【问题描述】:

当使用DataTables 将其导出到 Excel 时,我试图在 HTML 表中保留使用 <br> 制作的换行符。
我按照他们的指南在这里用正则表达式替换某些东西:DataTables find and replace during export

我能够更换东西没问题。但我无法用换行符替换 <br>,使同一单元格中的内容保留其换行符。

这是我的 JS:

$( document ).ready(function() {

var fixNewLine = {
        exportOptions: {
            format: {
                body: function ( data, column, row ) {
                    // Strip $ from salary column to make it numeric
                    return column === 5 ?
// THIS WORKS:          data.replace(/test/ig, "blablabla"):
                        data.replace( /<br\s*\/?>/ig, '"'+"\r\n"+'"' ) :
                        data;
                }
            }
        }
    };


    $('#table2excel').DataTable({
        dom: 'Bfrtip',
        buttons:[
            $.extend( true, {}, fixNewLine, {
                extend: 'copyHtml5'
            } ),
            $.extend( true, {}, fixNewLine, {
                extend: 'excelHtml5'
            } ),
            $.extend( true, {}, fixNewLine, {
                extend: 'pdfHtml5'
            } )
        ]

    });
});

问题出在这一行:

data.replace( /<br\s*\/?>/ig, '"'+"\r\n"+'"' ) :

它被保存在 excel 中,只有一对 " " 而不是实际的换行符。 请注意,这也不起作用:

data.replace( /<br\s*\/?>/ig, "\r\n"):

有什么建议吗?

这里有一个类似的帖子:Export value with Linebreaks into single cell in Excel. jQuery Datatables 但它已经过时了,因为它已经有一年的历史了,并且已经对 DataTables 进行了更新,并且“TableTools”已被“Buttons”取代。

【问题讨论】:

    标签: regex excel datatable export-to-excel line-breaks


    【解决方案1】:

    正确答案是:

    data.replace( /<br\s*\/?>/ig, "\n" ) :
    

    但是,您需要在打开 excel 时按“自动换行”按钮。 如果有人知道自动包装它的方法,请告诉我。

    【讨论】:

      【解决方案2】:

      替换功能是内置在 javascript 中的。也许您想删除引号?

      data.replace( /&lt;br\s*\/?&gt;/ig, "\r\n")

      在 javascript 解释器中为我工作。

      格式化函数的调用者可能会删除换行符并用空格替换它们

      【讨论】:

      • 谢谢。我试过了,但仍然没有换行符。 “我的格式调用者”是什么意思?
      • 显然它只适用于“\n”。但是,我需要按下 excel 中的“显示换行符”按钮!我仍然需要找到解决此问题的方法。
      • 这似乎是正确的答案 - 只有你的小改动将“\r\n”替换为“\n”。您为什么不要求 @Chris 更正此问题并将其标记为正确?
      【解决方案3】:

      这适用于 Windows Excel 2016 中的自动换行文本

      data.replace( /<br\s*\/?>/ig, "\r")  // \r, not \n
      

      自定义按钮

      $('#myTable').DataTable( {
          buttons: [
              {
                  extend: 'excelHtml5',
                  customize: function( xlsx ) {
                      var sheet = xlsx.xl.worksheets['sheet1.xml'];
                      // set cell style: Wrapped text
                      $('row c', sheet).attr( 's', '55' );
                  }
              }
          ]
      });
      

      有关按钮自定义的更多信息:https://datatables.net/reference/button/excelHtml5

      【讨论】:

        猜你喜欢
        • 2015-06-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-03
        • 2014-11-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多