Skip to content

Commit a251794

Browse files
authored
Merge pull request #5848 from mportuga/issues/exporter
fix(#5517): Update to use or not separator header based on a new grid option.
2 parents 8096ed0 + cc27e35 commit a251794

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

src/features/exporter/js/exporter.js

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,15 @@
235235
* <br/>Defaults to false
236236
*/
237237
gridOptions.exporterOlderExcelCompatibility = gridOptions.exporterOlderExcelCompatibility === true;
238+
/**
239+
* @ngdoc object
240+
* @name exporterIsExcelCompatible
241+
* @propertyOf ui.grid.exporter.api:GridOptions
242+
* @description Separator header, used to set a custom column separator in a csv file, only works on MS Excel.
243+
* Used it on other programs will make csv content display unproperly. Setting this option to false won't add this header.
244+
* <br/>Defaults to false
245+
*/
246+
gridOptions.exporterIsExcelCompatible = gridOptions.exporterIsExcelCompatible === true;
238247
/**
239248
* @ngdoc object
240249
* @name exporterMenuItemOrder
@@ -634,7 +643,7 @@
634643
var exportData = self.getData(grid, rowTypes, colTypes);
635644
var csvContent = self.formatAsCsv(exportColumnHeaders, exportData, grid.options.exporterCsvColumnSeparator);
636645

637-
self.downloadFile (grid.options.exporterCsvFilename, csvContent, grid.options.exporterCsvColumnSeparator, grid.options.exporterOlderExcelCompatibility);
646+
self.downloadFile (grid.options.exporterCsvFilename, csvContent, grid.options.exporterCsvColumnSeparator, grid.options.exporterOlderExcelCompatibility, grid.options.exporterIsExcelCompatible);
638647
});
639648
},
640649

@@ -917,14 +926,19 @@
917926
* @param {string} csvContent the csv content that we'd like to
918927
* download as a file
919928
* @param {boolean} exporterOlderExcelCompatibility whether or not we put a utf-16 BOM on the from (\uFEFF)
929+
* @param {boolean} exporterIsExcelCompatible whether or not we add separator header ('sep=X')
920930
*/
921-
downloadFile: function (fileName, csvContent, columnSeparator, exporterOlderExcelCompatibility) {
931+
downloadFile: function (fileName, csvContent, columnSeparator, exporterOlderExcelCompatibility, exporterIsExcelCompatible) {
922932
var D = document;
923933
var a = D.createElement('a');
924934
var strMimeType = 'application/octet-stream;charset=utf-8';
925935
var rawFile;
926936
var ieVersion = this.isIE();
927937

938+
if (exporterIsExcelCompatible) {
939+
csvContent = 'sep=' + columnSeparator + '\r\n' + csvContent;
940+
}
941+
928942
// IE10+
929943
if (navigator.msSaveBlob) {
930944
return navigator.msSaveOrOpenBlob(
@@ -940,7 +954,7 @@
940954
document.body.appendChild(frame);
941955

942956
frame.contentWindow.document.open('text/html', 'replace');
943-
frame.contentWindow.document.write('sep=' + columnSeparator + '\r\n' + csvContent);
957+
frame.contentWindow.document.write(csvContent);
944958
frame.contentWindow.document.close();
945959
frame.contentWindow.focus();
946960
frame.contentWindow.document.execCommand('SaveAs', true, fileName);

src/features/exporter/test/exporter.spec.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ describe('ui.grid.exporter uiGridExporterService', function () {
7575
exporterCsvFilename: 'download.csv',
7676
exporterPdfFilename: 'download.pdf',
7777
exporterOlderExcelCompatibility: false,
78+
exporterIsExcelCompatible: false,
7879
exporterPdfDefaultStyle : { fontSize : 11 },
7980
exporterPdfTableStyle : { margin : [ 0, 5, 0, 15 ] },
8081
exporterPdfTableHeaderStyle : { bold : true, fontSize : 12, color : 'black' },
@@ -106,6 +107,7 @@ describe('ui.grid.exporter uiGridExporterService', function () {
106107
exporterCsvFilename: 'myfile.csv',
107108
exporterPdfFilename: 'myfile.pdf',
108109
exporterOlderExcelCompatibility: true,
110+
exporterIsExcelCompatible: true,
109111
exporterPdfDefaultStyle : { fontSize : 12 },
110112
exporterPdfTableStyle : { margin : [ 15, 5, 15, 15 ] },
111113
exporterPdfTableHeaderStyle : { bold : false, fontSize : 12, color : 'green' },
@@ -134,6 +136,7 @@ describe('ui.grid.exporter uiGridExporterService', function () {
134136
exporterCsvFilename: 'myfile.csv',
135137
exporterPdfFilename: 'myfile.pdf',
136138
exporterOlderExcelCompatibility: true,
139+
exporterIsExcelCompatible: true,
137140
exporterPdfDefaultStyle : { fontSize : 12 },
138141
exporterPdfTableStyle : { margin : [ 15, 5, 15, 15 ] },
139142
exporterPdfTableHeaderStyle : { bold : false, fontSize : 12, color : 'green' },

0 commit comments

Comments
 (0)