在使用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”所取代。
答案 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