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

我试图保留在HTML表格中使用<br>进行换行时,将其导出为使用DataTable的 Excel。
我按照他们的指导,用正则expression式在这里取代某些东西: 数据表在导出期间查找和replace 。

我能够取代没有问题的事情。 但是我不能用换行符来replace这个新行,这些换行符使得在同一个单元格中的内容保持其换行符。

这是我的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"): 

有什么build议?

这里有一个类似的线程: 使用Linebreaks将值导出到Excel中的单个单元格中。 jQuery Datatables但已经过时了,因为它已经过了一年了,DataTable已经有了更新,“TableTools”已经被“Buttons”所取代。

正确的答案是:

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

但是,打开Excel时需要按下“换行文本”button。 如果有人知道自动包装的方法,请告诉我。

replacefunction是内置到JavaScript。 也许你想删除报价?

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

适用于JavaScript解释器。

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