使用 jQuery Datatables 2016 将带有换行符的值导出到 Excel 中的单个单元格

Export value with Linebreaks into single cell in Excel with jQuery Datatables 2016

我试图在使用 DataTables.
I followed their guide to replace certain things with Regex here: DataTables find and replace during export.[=20 将 excel 导出到 excel 时在 HTML table 中保留使用 <br> 的换行符=]

我可以毫无问题地更换东西。但是我没能用换行符替换 <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" 取代。

替换功能内置于 javascript。也许您想删除引号?

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

在 javascript 解释器中为我工作。

您的格式化函数的调用者可能会删除换行符并将其替换为空格

正确答案是:

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

但是,打开excel时需要按"wrap text"按钮。 如果有人知道自动包装的方法,请告诉我。

这对我来说适用于 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