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

时间:2016-03-03 01:42:56

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

在使用DataTables将其导出到Excel时,我尝试在HTML表格中保留使用F5制作的换行符。我跟着他们的指南在这里用正则表达式取代了某些东西:DataTables find and replace during export

我能够替换没问题的东西。但是我没有用新行替换<br>,这些新行使相同单元格中的内容保留其换行符。

这是我的JS:

<br>

问题出在这一行:

$( 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'
            } )
        ]

    });
});

它只保存在excel中,只有一对data.replace( /<br\s*\/?>/ig, '"'+"\r\n"+'"' ) : 而不是实际的换行符。 请注意,这也不起作用:

" "

有什么建议吗?

这里有一个类似的主题:Export value with Linebreaks into single cell in Excel. jQuery Datatables 但是它已经过时了,因为它已经有一年了,DataTables也有了更新,“TableTools”已被“Buttons”所取代。

3 个答案:

答案 0 :(得分:5)

正确答案是:

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

但是,您需要按&#34;换行文字&#34;打开excel时按钮。 如果有人知道让它自动包裹的方法,请告诉我。

答案 1 :(得分:1)

替换功能内置于javascript中。也许你想删除引用?

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

在javascript解释器中为我工作。

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

答案 2 :(得分:0)

这适用于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