diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/columns_settings.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/columns_settings.inc index 4a5b212248..7015e5f0fd 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/columns_settings.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/columns_settings.inc @@ -72,6 +72,23 @@ function KohaTable(id_selector, dt_parameters, table_settings, add_filters, defa exportColumns = dt_parameters["exportColumns"]; } + const export_format_spreadsheet = { + body: function ( data, row, column, node ) { + var newnode = $(node); + + if ( newnode.find(".noExport").length > 0 ) { + newnode = newnode.clone(); + newnode.find(".noExport").remove(); + } + let trimmed_str = newnode.text().replace( /\n/g, ' ' ).trim(); + const unsafeCharacters = /^[=+\-@\t\r]/; + if ( unsafeCharacters.test(trimmed_str) ){ + trimmed_str = "'" + trimmed_str; + } + return trimmed_str; + } + } + var export_format = { body: function ( data, row, column, node ) { var newnode = $(node); @@ -115,7 +132,7 @@ function KohaTable(id_selector, dt_parameters, table_settings, add_filters, defa exportOptions: { columns: exportColumns, rows: exportRows, - format: export_format + format: export_format_spreadsheet }, }, { @@ -137,7 +154,7 @@ function KohaTable(id_selector, dt_parameters, table_settings, add_filters, defa exportOptions: { columns: exportColumns, rows: exportRows, - format: export_format + format: export_format_spreadsheet }, } ); diff --git a/koha-tmpl/intranet-tmpl/prog/js/datatables.js b/koha-tmpl/intranet-tmpl/prog/js/datatables.js index bf3be9c64f..e5068ce551 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/datatables.js +++ b/koha-tmpl/intranet-tmpl/prog/js/datatables.js @@ -605,6 +605,23 @@ function _dt_buttons(params){ exportColumns = settings["exportColumns"]; } + const export_format_spreadsheet = { + body: function ( data, row, column, node ) { + var newnode = $(node); + + if ( newnode.find(".noExport").length > 0 ) { + newnode = newnode.clone(); + newnode.find(".noExport").remove(); + } + let trimmed_str = newnode.text().replace( /\n/g, ' ' ).trim(); + const unsafeCharacters = /^[=+\-@\t\r]/; + if ( unsafeCharacters.test(trimmed_str) ){ + trimmed_str = "'" + trimmed_str; + } + return trimmed_str; + } + } + var export_format = { body: function ( data, row, column, node ) { var newnode = $(node); @@ -623,14 +640,14 @@ function _dt_buttons(params){ extend: 'excelHtml5', exportOptions: { columns: exportColumns, - format: export_format + format: export_format_spreadsheet }, }, { extend: 'csvHtml5', exportOptions: { columns: exportColumns, - format: export_format + format: export_format_spreadsheet }, }, {