@slickgrid-universal/excel-export 9.11.0 → 9.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -49,13 +49,15 @@ export declare class ExcelExportService implements ExternalResource, BaseExcelEx
49
49
  */
50
50
  init(grid: SlickGrid, containerService: ContainerService): void;
51
51
  /**
52
- * Function to export the Grid result to an Excel CSV format using JavaScript for it to produce the CSV file.
53
- * This is a WYSIWYG export to file output (What You See is What You Get)
52
+ * Export the current grid data to Excel (WYSIWYG).
54
53
  *
55
- * NOTES: The column position needs to match perfectly the JSON Object position because of the way we are pulling the data,
56
- * which means that if any column(s) got moved in the UI, it has to be reflected in the JSON array output as well
54
+ * Notes:
55
+ * - Column order must match the grid.
56
+ * - For large datasets, processing yields periodically to keep the UI responsive.
57
57
  *
58
- * Example: exportToExcel({ format: FileType.csv, delimiter: DelimiterType.comma })
58
+ * Events:
59
+ * - 'onBeforeExportToExcel' before export starts
60
+ * - 'onAfterExportToExcel' after export completes or fails
59
61
  */
60
62
  exportToExcel(options?: ExcelExportOption): Promise<boolean>;
61
63
  /**
@@ -67,7 +69,10 @@ export declare class ExcelExportService implements ExternalResource, BaseExcelEx
67
69
  * @return {string} The column name.
68
70
  */
69
71
  getExcelColumnNameByIndex(colIndex: number): string;
70
- protected getDataOutput(): Array<string[] | ExcelColumnMetadata[]>;
72
+ /**
73
+ * Async version of getDataOutput with yielding for UI responsiveness during large dataset processing
74
+ */
75
+ protected getDataOutputAsync(): Promise<Array<string[] | ExcelColumnMetadata[]>>;
71
76
  /** Get each column style including a style for the width of each column */
72
77
  protected getColumnStyles(columns: Column[]): any[];
73
78
  /**
@@ -92,8 +97,14 @@ export declare class ExcelExportService implements ExternalResource, BaseExcelEx
92
97
  protected getColumnHeaders(columns: Column[]): Array<KeyTitlePair> | null;
93
98
  /**
94
99
  * Get all the grid row data and return that as an output string
100
+ * Async version of pushAllGridRowDataToArray with yielding for UI responsiveness during large dataset processing.
101
+ * Processes rows directly from DataView with periodic yielding for responsiveness.
95
102
  */
96
- protected pushAllGridRowDataToArray(originalDaraArray: Array<Array<string | ExcelColumnMetadata | number>>, columns: Column[]): Array<Array<string | ExcelColumnMetadata | number>>;
103
+ protected pushAllGridRowDataToArrayAsync(originalDaraArray: Array<Array<string | ExcelColumnMetadata | number>>, columns: Column[]): Promise<Array<Array<string | ExcelColumnMetadata | number>>>;
104
+ /** OPTIMIZATION: Pre-calculate column metadata to avoid repeated calculations */
105
+ protected preCalculateColumnMetadata(columns: Column[]): Map<string, any>;
106
+ /** OPTIMIZATION: Efficient yielding - use the fastest available method */
107
+ protected efficientYield(): Promise<void>;
97
108
  /**
98
109
  * Get the data of a regular row (a row without grouping)
99
110
  * @param {Array<Object>} columns - column definitions
@@ -112,7 +123,7 @@ export declare class ExcelExportService implements ExternalResource, BaseExcelEx
112
123
  * @param itemObj
113
124
  */
114
125
  protected readGroupedTotalRows(columns: Column[], itemObj: any, dataRowIdx: number): Array<ExcelColumnMetadata | string | number>;
115
- /** Legacy (non-streaming) Excel export fallback method */
116
- protected legacyExcelExport(filename: string, mimeType: string, resolve: (value: boolean) => void): void;
126
+ /** Async version of legacy Excel export fallback method */
127
+ protected legacyExcelExportAsync(filename: string, mimeType: string): Promise<boolean>;
117
128
  }
118
129
  //# sourceMappingURL=excelExport.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"excelExport.service.d.ts","sourceRoot":"","sources":["../src/excelExport.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"excelExport.service.d.ts","sourceRoot":"","sources":["../src/excelExport.service.ts"],"names":[],"mappings":"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"}
@@ -65,93 +65,96 @@ export class ExcelExportService {
65
65
  }
66
66
  }
67
67
  /**
68
- * Function to export the Grid result to an Excel CSV format using JavaScript for it to produce the CSV file.
69
- * This is a WYSIWYG export to file output (What You See is What You Get)
68
+ * Export the current grid data to Excel (WYSIWYG).
70
69
  *
71
- * NOTES: The column position needs to match perfectly the JSON Object position because of the way we are pulling the data,
72
- * which means that if any column(s) got moved in the UI, it has to be reflected in the JSON array output as well
70
+ * Notes:
71
+ * - Column order must match the grid.
72
+ * - For large datasets, processing yields periodically to keep the UI responsive.
73
73
  *
74
- * Example: exportToExcel({ format: FileType.csv, delimiter: DelimiterType.comma })
74
+ * Events:
75
+ * - 'onBeforeExportToExcel' before export starts
76
+ * - 'onAfterExportToExcel' after export completes or fails
75
77
  */
76
- exportToExcel(options) {
78
+ async exportToExcel(options) {
77
79
  if (!this._grid || !this._dataView || !this._pubSubService) {
78
80
  throw new Error('[Slickgrid-Universal] it seems that the SlickGrid & DataView objects and/or PubSubService are not initialized did you forget to enable the grid option flag "enableExcelExport"?');
79
81
  }
80
- // wrap in a Promise so that we can add loading spinner
81
- return new Promise((resolve) => {
82
- this._pubSubService?.publish('onBeforeExportToExcel', true);
83
- this._excelExportOptions = extend(true, {}, { ...DEFAULT_EXPORT_OPTIONS, ...this._gridOptions.excelExportOptions, ...options });
84
- this._fileFormat = this._excelExportOptions.format || FileType.xlsx;
85
- const useStreamingExport = !!this._excelExportOptions.useStreamingExport;
86
- // reset references of detected Excel formats
87
- this._regularCellExcelFormats = {};
88
- this._groupTotalExcelFormats = {};
89
- // prepare the Excel Workbook & Sheet
90
- const worksheetOptions = { name: this._excelExportOptions.sheetName || 'Sheet1' };
91
- this._workbook = new Workbook();
92
- this._sheet = this._workbook.createWorksheet(worksheetOptions);
93
- // add any Excel Format/Stylesheet to current Workbook
94
- this._stylesheet = this._workbook.getStyleSheet();
95
- // create some common default Excel formatters that will be used
96
- const boldFormat = this._stylesheet.createFormat({ font: { bold: true } });
97
- const stringFormat = this._stylesheet.createFormat({ format: '@' });
98
- const numberFormat = this._stylesheet.createFormat({ format: '0' });
99
- this._stylesheetFormats = { boldFormat, numberFormat, stringFormat };
100
- this._sheet.setColumnFormats([boldFormat]);
101
- // Add a short delay to ensure spinner/UI updates before heavy export work begins
102
- setTimeout(async () => {
103
- // get all data by reading all DataView rows
104
- const dataOutput = this.getDataOutput();
105
- if (this._gridOptions?.excelExportOptions?.customExcelHeader) {
106
- this._gridOptions.excelExportOptions.customExcelHeader(this._workbook, this._sheet);
107
- }
108
- const columns = this._grid?.getColumns() || [];
109
- this._sheet.setColumns(this.getColumnStyles(columns));
110
- const currentSheetData = this._sheet.data;
111
- let finalOutput = currentSheetData;
112
- if (Array.isArray(currentSheetData) && Array.isArray(dataOutput)) {
113
- finalOutput = this._sheet.data.concat(dataOutput);
114
- }
115
- this._sheet.setData(finalOutput);
116
- this._workbook.addWorksheet(this._sheet);
117
- // MIME type could be undefined, if that's the case we'll detect the type by its file extension
118
- // user could also provide its own mime type, if however an empty string is provided we will consider to be without any MIME type)
119
- let mimeType = this._excelExportOptions?.mimeType;
120
- if (mimeType === undefined) {
121
- mimeType =
122
- this._fileFormat === FileType.xls
123
- ? 'application/vnd.ms-excel'
124
- : 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
125
- }
126
- const filename = `${this._excelExportOptions.filename}.${this._fileFormat}`;
127
- if (this._fileFormat === FileType.xlsx && useStreamingExport) {
128
- try {
129
- const stream = createExcelFileStream(this._workbook, { chunkSize: 1000 });
130
- const chunks = [];
131
- for await (const chunk of stream) {
132
- chunks.push(chunk);
133
- }
134
- const blob = new Blob(chunks, { type: mimeType });
135
- const url = URL.createObjectURL(blob);
136
- // download with anchor tag
137
- const a = createDomElement('a', { href: url, download: filename }, document.body);
138
- a.click();
139
- document.body.removeChild(a);
140
- URL.revokeObjectURL(url);
141
- this._pubSubService?.publish('onAfterExportToExcel', { filename, mimeType });
142
- resolve(true);
143
- }
144
- catch (err) {
145
- // fallback to legacy export if streaming is not supported
146
- this.legacyExcelExport(filename, mimeType, resolve);
82
+ this._pubSubService?.publish('onBeforeExportToExcel', true);
83
+ this._excelExportOptions = extend(true, {}, { ...DEFAULT_EXPORT_OPTIONS, ...this._gridOptions.excelExportOptions, ...options });
84
+ this._fileFormat = this._excelExportOptions.format || FileType.xlsx;
85
+ const useStreamingExport = !!this._excelExportOptions.useStreamingExport;
86
+ // reset references of detected Excel formats
87
+ this._regularCellExcelFormats = {};
88
+ this._groupTotalExcelFormats = {};
89
+ // prepare the Excel Workbook & Sheet
90
+ const worksheetOptions = { name: this._excelExportOptions.sheetName || 'Sheet1' };
91
+ this._workbook = new Workbook();
92
+ this._sheet = this._workbook.createWorksheet(worksheetOptions);
93
+ // add any Excel Format/Stylesheet to current Workbook
94
+ this._stylesheet = this._workbook.getStyleSheet();
95
+ // create some common default Excel formatters that will be used
96
+ const boldFormat = this._stylesheet.createFormat({ font: { bold: true } });
97
+ const stringFormat = this._stylesheet.createFormat({ format: '@' });
98
+ const numberFormat = this._stylesheet.createFormat({ format: '0' });
99
+ this._stylesheetFormats = { boldFormat, numberFormat, stringFormat };
100
+ this._sheet.setColumnFormats([boldFormat]);
101
+ try {
102
+ // get all data by reading all DataView rows with yielding for responsiveness
103
+ const dataOutput = await this.getDataOutputAsync();
104
+ if (this._gridOptions?.excelExportOptions?.customExcelHeader) {
105
+ this._gridOptions.excelExportOptions.customExcelHeader(this._workbook, this._sheet);
106
+ }
107
+ const columns = this._grid?.getColumns() || [];
108
+ this._sheet.setColumns(this.getColumnStyles(columns));
109
+ const currentSheetData = this._sheet.data;
110
+ let finalOutput = currentSheetData;
111
+ if (Array.isArray(currentSheetData) && Array.isArray(dataOutput)) {
112
+ finalOutput = this._sheet.data.concat(dataOutput);
113
+ }
114
+ this._sheet.setData(finalOutput);
115
+ this._workbook.addWorksheet(this._sheet);
116
+ // MIME type could be undefined, if that's the case we'll detect the type by its file extension
117
+ // user could also provide its own mime type, if however an empty string is provided we will consider to be without any MIME type)
118
+ let mimeType = this._excelExportOptions?.mimeType;
119
+ if (mimeType === undefined) {
120
+ mimeType =
121
+ this._fileFormat === FileType.xls
122
+ ? 'application/vnd.ms-excel'
123
+ : 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
124
+ }
125
+ const filename = `${this._excelExportOptions.filename}.${this._fileFormat}`;
126
+ if (this._fileFormat === FileType.xlsx && useStreamingExport) {
127
+ try {
128
+ const stream = createExcelFileStream(this._workbook, { chunkSize: 1000 });
129
+ const chunks = [];
130
+ for await (const chunk of stream) {
131
+ chunks.push(chunk);
147
132
  }
133
+ const blob = new Blob(chunks, { type: mimeType });
134
+ const url = URL.createObjectURL(blob);
135
+ // download with anchor tag
136
+ const a = createDomElement('a', { href: url, download: filename }, document.body);
137
+ a.click();
138
+ document.body.removeChild(a);
139
+ URL.revokeObjectURL(url);
140
+ this._pubSubService?.publish('onAfterExportToExcel', { filename, mimeType });
141
+ return true;
148
142
  }
149
- else {
150
- // fallback to legacy export for non-xlsx or if useStreamingExport is false
151
- this.legacyExcelExport(filename, mimeType, resolve);
143
+ catch (err) {
144
+ // fallback to legacy export if streaming is not supported
145
+ return await this.legacyExcelExportAsync(filename, mimeType);
152
146
  }
153
- }, 50); // delay to allow spinner to show
154
- });
147
+ }
148
+ else {
149
+ // fallback to legacy export for non-xlsx or if useStreamingExport is false
150
+ return await this.legacyExcelExportAsync(filename, mimeType);
151
+ }
152
+ } /** v8 ignore next */
153
+ catch (error) {
154
+ console.error('Excel export failed:', error);
155
+ this._pubSubService?.publish('onAfterExportToExcel', { error });
156
+ return false;
157
+ }
155
158
  }
156
159
  /**
157
160
  * Takes a positive integer and returns the corresponding column name.
@@ -176,7 +179,10 @@ export class ExcelExportService {
176
179
  // -----------------------
177
180
  // protected functions
178
181
  // -----------------------
179
- getDataOutput() {
182
+ /**
183
+ * Async version of getDataOutput with yielding for UI responsiveness during large dataset processing
184
+ */
185
+ async getDataOutputAsync() {
180
186
  const columns = this._grid?.getColumns() || [];
181
187
  // data variable which will hold all the fields data of a row
182
188
  const outputData = [];
@@ -196,8 +202,8 @@ export class ExcelExportService {
196
202
  // get all Column Header Titles (it might include a "Group by" title at A1 cell)
197
203
  // also style the headers, defaults to Bold but user could pass his own style
198
204
  outputData.push(this.getColumnHeaderData(columns, { style: columnHeaderStyleId }));
199
- // Populate the rest of the Grid Data
200
- this.pushAllGridRowDataToArray(outputData, columns);
205
+ // Populate the rest of the Grid Data by reading directly from DataView with yielding for responsiveness
206
+ await this.pushAllGridRowDataToArrayAsync(outputData, columns);
201
207
  return outputData;
202
208
  }
203
209
  /** Get each column style including a style for the width of each column */
@@ -283,9 +289,7 @@ export class ExcelExportService {
283
289
  this._hasGroupedItems = true;
284
290
  return groupByColumnHeader;
285
291
  }
286
- else {
287
- this._hasGroupedItems = false;
288
- }
292
+ this._hasGroupedItems = false;
289
293
  return null;
290
294
  }
291
295
  /**
@@ -297,13 +301,9 @@ export class ExcelExportService {
297
301
  if (Array.isArray(columns)) {
298
302
  // Populate the Grouped Column Header, pull the columnGroup(Key) defined
299
303
  columns.forEach((columnDef) => {
300
- let groupedHeaderTitle = '';
301
- if (columnDef.columnGroupKey && this._gridOptions.enableTranslate && this._translaterService?.translate) {
302
- groupedHeaderTitle = this._translaterService.translate(columnDef.columnGroupKey);
303
- }
304
- else {
305
- groupedHeaderTitle = columnDef.columnGroup || '';
306
- }
304
+ const groupedHeaderTitle = columnDef.columnGroupKey && this._gridOptions.enableTranslate && this._translaterService?.translate
305
+ ? this._translaterService.translate(columnDef.columnGroupKey)
306
+ : columnDef.columnGroup || '';
307
307
  const skippedField = columnDef.excludeFromExport || false;
308
308
  // if column width is 0px, then we consider that field as a hidden field and should not be part of the export
309
309
  if ((columnDef.width === undefined || columnDef.width > 0) && !skippedField) {
@@ -346,18 +346,26 @@ export class ExcelExportService {
346
346
  }
347
347
  /**
348
348
  * Get all the grid row data and return that as an output string
349
+ * Async version of pushAllGridRowDataToArray with yielding for UI responsiveness during large dataset processing.
350
+ * Processes rows directly from DataView with periodic yielding for responsiveness.
349
351
  */
350
- pushAllGridRowDataToArray(originalDaraArray, columns) {
351
- const lineCount = this._dataView.getLength();
352
- // loop through all the grid rows of data
352
+ async pushAllGridRowDataToArrayAsync(originalDaraArray, columns) {
353
+ const dataView = this._dataView;
354
+ const lineCount = dataView.getLength();
355
+ // Yield periodically based on dataset size
356
+ const YIELD_FREQUENCY = lineCount < 1000 ? 0 : lineCount < 10000 ? 1000 : 500;
357
+ // Update the hasGroupedItems flag from current grouping
358
+ const grouping = dataView.getGrouping();
359
+ this._hasGroupedItems = Array.isArray(grouping) && grouping.length > 0;
360
+ // Read rows directly from DataView
353
361
  for (let rowNumber = 0; rowNumber < lineCount; rowNumber++) {
354
- const itemObj = this._dataView.getItem(rowNumber);
362
+ const itemObj = dataView.getItem(rowNumber);
355
363
  // make sure we have a filled object AND that the item doesn't include the "getItem" method
356
364
  // this happen could happen with an opened Row Detail as it seems to include an empty Slick DataView (we'll just skip those lines)
357
365
  if (itemObj && !itemObj.hasOwnProperty('getItem')) {
358
366
  // Normal row (not grouped by anything) would have an ID which was predefined in the Grid Columns definition
359
367
  if (itemObj[this._datasetIdPropName] !== null && itemObj[this._datasetIdPropName] !== undefined) {
360
- // get regular row item data
368
+ // Read a regular row
361
369
  originalDaraArray.push(this.readRegularRowData(columns, rowNumber, itemObj, rowNumber));
362
370
  }
363
371
  else if (this._hasGroupedItems && itemObj.__groupTotals === undefined) {
@@ -365,13 +373,53 @@ export class ExcelExportService {
365
373
  originalDaraArray.push([this.readGroupedRowTitle(itemObj)]);
366
374
  }
367
375
  else if (itemObj.__groupTotals) {
368
- // else if the row is a Group By and we have agreggators, then a property of '__groupTotals' would exist under that object
376
+ // else if the row is a Group By and we have aggregators, then a property of '__groupTotals' would exist under that object
369
377
  originalDaraArray.push(this.readGroupedTotalRows(columns, itemObj, rowNumber));
370
378
  }
371
379
  }
380
+ // Yield to event loop
381
+ if (YIELD_FREQUENCY > 0 && rowNumber > 0 && rowNumber % YIELD_FREQUENCY === 0) {
382
+ await new Promise((resolve) => setTimeout(resolve, 0));
383
+ }
372
384
  }
373
385
  return originalDaraArray;
374
386
  }
387
+ /** OPTIMIZATION: Pre-calculate column metadata to avoid repeated calculations */
388
+ preCalculateColumnMetadata(columns) {
389
+ const cache = new Map();
390
+ // OPTIMIZATION: Pre-calculate if we have complex spanning to avoid checking on every row
391
+ const hasComplexSpanning = this._gridOptions.enableCellRowSpan || columns.some((col) => col.colspan || col.rowspan);
392
+ for (const columnDef of columns) {
393
+ if (!columnDef.excludeFromExport) {
394
+ const fieldType = getColumnFieldType(columnDef);
395
+ const exportOptions = { ...this._excelExportOptions };
396
+ // Pre-calculate date formatting logic
397
+ if (columnDef.exportWithFormatter !== false && isColumnDateType(fieldType)) {
398
+ exportOptions.exportWithFormatter = true;
399
+ }
400
+ cache.set(String(columnDef.id), {
401
+ fieldType,
402
+ exportOptions,
403
+ hasFormatter: !!columnDef.formatter,
404
+ sanitizeData: columnDef.sanitizeDataExport || this._excelExportOptions.sanitizeDataExport,
405
+ field: columnDef.field,
406
+ hasComplexSpanning, // Cache this to avoid repeated checks
407
+ });
408
+ }
409
+ }
410
+ return cache;
411
+ }
412
+ /** OPTIMIZATION: Efficient yielding - use the fastest available method */
413
+ async efficientYield() {
414
+ // Use scheduler.postTask if available (Chrome 94+) - fastest
415
+ if (typeof globalThis.scheduler?.postTask === 'function') {
416
+ return new Promise((resolve) => {
417
+ globalThis.scheduler.postTask(resolve, { priority: 'user-blocking' });
418
+ });
419
+ }
420
+ // Use setTimeout(0) - most reliable and often fastest
421
+ return new Promise((resolve) => setTimeout(resolve, 0));
422
+ }
375
423
  /**
376
424
  * Get the data of a regular row (a row without grouping)
377
425
  * @param {Array<Object>} columns - column definitions
@@ -591,12 +639,18 @@ export class ExcelExportService {
591
639
  });
592
640
  return outputStrings;
593
641
  }
594
- /** Legacy (non-streaming) Excel export fallback method */
595
- legacyExcelExport(filename, mimeType, resolve) {
596
- downloadExcelFile(this._workbook, filename, { mimeType }).then(() => {
642
+ /** Async version of legacy Excel export fallback method */
643
+ async legacyExcelExportAsync(filename, mimeType) {
644
+ try {
645
+ await downloadExcelFile(this._workbook, filename, { mimeType });
597
646
  this._pubSubService?.publish(`onAfterExportToExcel`, { filename, mimeType });
598
- resolve(true);
599
- });
647
+ return true;
648
+ }
649
+ catch (error) {
650
+ console.error('Legacy Excel export failed:', error);
651
+ this._pubSubService?.publish('onAfterExportToExcel', { error });
652
+ return false;
653
+ }
600
654
  }
601
655
  }
602
656
  //# sourceMappingURL=excelExport.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"excelExport.service.js","sourceRoot":"","sources":["../src/excelExport.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"excelExport.service.js","sourceRoot":"","sources":["../src/excelExport.service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@slickgrid-universal/excel-export",
3
- "version": "9.11.0",
3
+ "version": "9.12.0",
4
4
  "description": "Excel Export (xls/xlsx) Service.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -31,13 +31,13 @@
31
31
  "url": "https://github.com/ghiscoding/slickgrid-universal/issues"
32
32
  },
33
33
  "dependencies": {
34
- "@slickgrid-universal/common": "9.11.0",
35
- "@slickgrid-universal/utils": "9.11.0",
34
+ "@slickgrid-universal/common": "9.12.0",
35
+ "@slickgrid-universal/utils": "9.12.0",
36
36
  "excel-builder-vanilla": "^4.2.1"
37
37
  },
38
38
  "funding": {
39
39
  "type": "ko_fi",
40
40
  "url": "https://ko-fi.com/ghiscoding"
41
41
  },
42
- "gitHead": "da43b7628f1c55f9178ec389e5c4b2b89f586599"
42
+ "gitHead": "02bb1252e7069954d0ee0c5d187edc7c209d2245"
43
43
  }
@@ -133,107 +133,110 @@ export class ExcelExportService implements ExternalResource, BaseExcelExportServ
133
133
  }
134
134
 
135
135
  /**
136
- * Function to export the Grid result to an Excel CSV format using JavaScript for it to produce the CSV file.
137
- * This is a WYSIWYG export to file output (What You See is What You Get)
136
+ * Export the current grid data to Excel (WYSIWYG).
138
137
  *
139
- * NOTES: The column position needs to match perfectly the JSON Object position because of the way we are pulling the data,
140
- * which means that if any column(s) got moved in the UI, it has to be reflected in the JSON array output as well
138
+ * Notes:
139
+ * - Column order must match the grid.
140
+ * - For large datasets, processing yields periodically to keep the UI responsive.
141
141
  *
142
- * Example: exportToExcel({ format: FileType.csv, delimiter: DelimiterType.comma })
142
+ * Events:
143
+ * - 'onBeforeExportToExcel' before export starts
144
+ * - 'onAfterExportToExcel' after export completes or fails
143
145
  */
144
- exportToExcel(options?: ExcelExportOption): Promise<boolean> {
146
+ async exportToExcel(options?: ExcelExportOption): Promise<boolean> {
145
147
  if (!this._grid || !this._dataView || !this._pubSubService) {
146
148
  throw new Error(
147
149
  '[Slickgrid-Universal] it seems that the SlickGrid & DataView objects and/or PubSubService are not initialized did you forget to enable the grid option flag "enableExcelExport"?'
148
150
  );
149
151
  }
150
- // wrap in a Promise so that we can add loading spinner
151
- return new Promise((resolve) => {
152
- this._pubSubService?.publish('onBeforeExportToExcel', true);
153
- this._excelExportOptions = extend(true, {}, { ...DEFAULT_EXPORT_OPTIONS, ...this._gridOptions.excelExportOptions, ...options });
154
- this._fileFormat = this._excelExportOptions.format || FileType.xlsx;
155
- const useStreamingExport = !!this._excelExportOptions.useStreamingExport;
156
-
157
- // reset references of detected Excel formats
158
- this._regularCellExcelFormats = {};
159
- this._groupTotalExcelFormats = {};
160
-
161
- // prepare the Excel Workbook & Sheet
162
- const worksheetOptions = { name: this._excelExportOptions.sheetName || 'Sheet1' };
163
- this._workbook = new Workbook();
164
- this._sheet = this._workbook.createWorksheet(worksheetOptions);
165
-
166
- // add any Excel Format/Stylesheet to current Workbook
167
- this._stylesheet = this._workbook.getStyleSheet();
168
-
169
- // create some common default Excel formatters that will be used
170
- const boldFormat = this._stylesheet.createFormat({ font: { bold: true } });
171
- const stringFormat = this._stylesheet.createFormat({ format: '@' });
172
- const numberFormat = this._stylesheet.createFormat({ format: '0' });
173
- this._stylesheetFormats = { boldFormat, numberFormat, stringFormat };
174
- this._sheet.setColumnFormats([boldFormat]);
175
-
176
- // Add a short delay to ensure spinner/UI updates before heavy export work begins
177
- setTimeout(async () => {
178
- // get all data by reading all DataView rows
179
- const dataOutput = this.getDataOutput();
180
-
181
- if (this._gridOptions?.excelExportOptions?.customExcelHeader) {
182
- this._gridOptions.excelExportOptions.customExcelHeader(this._workbook, this._sheet);
183
- }
184
152
 
185
- const columns = this._grid?.getColumns() || [];
186
- this._sheet.setColumns(this.getColumnStyles(columns));
153
+ this._pubSubService?.publish('onBeforeExportToExcel', true);
154
+ this._excelExportOptions = extend(true, {}, { ...DEFAULT_EXPORT_OPTIONS, ...this._gridOptions.excelExportOptions, ...options });
155
+ this._fileFormat = this._excelExportOptions.format || FileType.xlsx;
156
+ const useStreamingExport = !!this._excelExportOptions.useStreamingExport;
187
157
 
188
- const currentSheetData = this._sheet.data;
189
- let finalOutput = currentSheetData;
190
- if (Array.isArray(currentSheetData) && Array.isArray(dataOutput)) {
191
- finalOutput = this._sheet.data.concat(dataOutput);
192
- }
158
+ // reset references of detected Excel formats
159
+ this._regularCellExcelFormats = {};
160
+ this._groupTotalExcelFormats = {};
193
161
 
194
- this._sheet.setData(finalOutput);
195
- this._workbook.addWorksheet(this._sheet);
196
-
197
- // MIME type could be undefined, if that's the case we'll detect the type by its file extension
198
- // user could also provide its own mime type, if however an empty string is provided we will consider to be without any MIME type)
199
- let mimeType = this._excelExportOptions?.mimeType;
200
- if (mimeType === undefined) {
201
- mimeType =
202
- this._fileFormat === FileType.xls
203
- ? 'application/vnd.ms-excel'
204
- : 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
205
- }
162
+ // prepare the Excel Workbook & Sheet
163
+ const worksheetOptions = { name: this._excelExportOptions.sheetName || 'Sheet1' };
164
+ this._workbook = new Workbook();
165
+ this._sheet = this._workbook.createWorksheet(worksheetOptions);
166
+
167
+ // add any Excel Format/Stylesheet to current Workbook
168
+ this._stylesheet = this._workbook.getStyleSheet();
169
+
170
+ // create some common default Excel formatters that will be used
171
+ const boldFormat = this._stylesheet.createFormat({ font: { bold: true } });
172
+ const stringFormat = this._stylesheet.createFormat({ format: '@' });
173
+ const numberFormat = this._stylesheet.createFormat({ format: '0' });
174
+ this._stylesheetFormats = { boldFormat, numberFormat, stringFormat };
175
+ this._sheet.setColumnFormats([boldFormat]);
176
+
177
+ try {
178
+ // get all data by reading all DataView rows with yielding for responsiveness
179
+ const dataOutput = await this.getDataOutputAsync();
180
+
181
+ if (this._gridOptions?.excelExportOptions?.customExcelHeader) {
182
+ this._gridOptions.excelExportOptions.customExcelHeader(this._workbook, this._sheet);
183
+ }
184
+
185
+ const columns = this._grid?.getColumns() || [];
186
+ this._sheet.setColumns(this.getColumnStyles(columns));
187
+
188
+ const currentSheetData = this._sheet.data;
189
+ let finalOutput = currentSheetData;
190
+ if (Array.isArray(currentSheetData) && Array.isArray(dataOutput)) {
191
+ finalOutput = this._sheet.data.concat(dataOutput);
192
+ }
193
+
194
+ this._sheet.setData(finalOutput);
195
+ this._workbook.addWorksheet(this._sheet);
196
+
197
+ // MIME type could be undefined, if that's the case we'll detect the type by its file extension
198
+ // user could also provide its own mime type, if however an empty string is provided we will consider to be without any MIME type)
199
+ let mimeType = this._excelExportOptions?.mimeType;
200
+ if (mimeType === undefined) {
201
+ mimeType =
202
+ this._fileFormat === FileType.xls
203
+ ? 'application/vnd.ms-excel'
204
+ : 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
205
+ }
206
206
 
207
- const filename = `${this._excelExportOptions.filename}.${this._fileFormat}`;
208
-
209
- if (this._fileFormat === FileType.xlsx && useStreamingExport) {
210
- try {
211
- const stream = createExcelFileStream(this._workbook, { chunkSize: 1000 });
212
- const chunks: Uint8Array[] = [];
213
- for await (const chunk of stream as AsyncIterable<Uint8Array>) {
214
- chunks.push(chunk);
215
- }
216
-
217
- const blob = new Blob(chunks as BlobPart[], { type: mimeType });
218
- const url = URL.createObjectURL(blob);
219
-
220
- // download with anchor tag
221
- const a = createDomElement('a', { href: url, download: filename }, document.body);
222
- a.click();
223
- document.body.removeChild(a);
224
- URL.revokeObjectURL(url);
225
- this._pubSubService?.publish('onAfterExportToExcel', { filename, mimeType });
226
- resolve(true);
227
- } catch (err) {
228
- // fallback to legacy export if streaming is not supported
229
- this.legacyExcelExport(filename, mimeType, resolve);
207
+ const filename = `${this._excelExportOptions.filename}.${this._fileFormat}`;
208
+
209
+ if (this._fileFormat === FileType.xlsx && useStreamingExport) {
210
+ try {
211
+ const stream = createExcelFileStream(this._workbook, { chunkSize: 1000 });
212
+ const chunks: Uint8Array[] = [];
213
+ for await (const chunk of stream as AsyncIterable<Uint8Array>) {
214
+ chunks.push(chunk);
230
215
  }
231
- } else {
232
- // fallback to legacy export for non-xlsx or if useStreamingExport is false
233
- this.legacyExcelExport(filename, mimeType, resolve);
216
+
217
+ const blob = new Blob(chunks as BlobPart[], { type: mimeType });
218
+ const url = URL.createObjectURL(blob);
219
+
220
+ // download with anchor tag
221
+ const a = createDomElement('a', { href: url, download: filename }, document.body);
222
+ a.click();
223
+ document.body.removeChild(a);
224
+ URL.revokeObjectURL(url);
225
+ this._pubSubService?.publish('onAfterExportToExcel', { filename, mimeType });
226
+ return true;
227
+ } catch (err) {
228
+ // fallback to legacy export if streaming is not supported
229
+ return await this.legacyExcelExportAsync(filename, mimeType);
234
230
  }
235
- }, 50); // delay to allow spinner to show
236
- });
231
+ } else {
232
+ // fallback to legacy export for non-xlsx or if useStreamingExport is false
233
+ return await this.legacyExcelExportAsync(filename, mimeType);
234
+ }
235
+ } /** v8 ignore next */ catch (error) {
236
+ console.error('Excel export failed:', error);
237
+ this._pubSubService?.publish('onAfterExportToExcel', { error });
238
+ return false;
239
+ }
237
240
  }
238
241
 
239
242
  /**
@@ -264,7 +267,10 @@ export class ExcelExportService implements ExternalResource, BaseExcelExportServ
264
267
  // protected functions
265
268
  // -----------------------
266
269
 
267
- protected getDataOutput(): Array<string[] | ExcelColumnMetadata[]> {
270
+ /**
271
+ * Async version of getDataOutput with yielding for UI responsiveness during large dataset processing
272
+ */
273
+ protected async getDataOutputAsync(): Promise<Array<string[] | ExcelColumnMetadata[]>> {
268
274
  const columns = this._grid?.getColumns() || [];
269
275
 
270
276
  // data variable which will hold all the fields data of a row
@@ -288,8 +294,8 @@ export class ExcelExportService implements ExternalResource, BaseExcelExportServ
288
294
  // also style the headers, defaults to Bold but user could pass his own style
289
295
  outputData.push(this.getColumnHeaderData(columns, { style: columnHeaderStyleId }));
290
296
 
291
- // Populate the rest of the Grid Data
292
- this.pushAllGridRowDataToArray(outputData, columns);
297
+ // Populate the rest of the Grid Data by reading directly from DataView with yielding for responsiveness
298
+ await this.pushAllGridRowDataToArrayAsync(outputData, columns);
293
299
 
294
300
  return outputData;
295
301
  }
@@ -389,9 +395,8 @@ export class ExcelExportService implements ExternalResource, BaseExcelExportServ
389
395
  if (Array.isArray(grouping) && grouping.length > 0) {
390
396
  this._hasGroupedItems = true;
391
397
  return groupByColumnHeader;
392
- } else {
393
- this._hasGroupedItems = false;
394
398
  }
399
+ this._hasGroupedItems = false;
395
400
  return null;
396
401
  }
397
402
 
@@ -405,12 +410,11 @@ export class ExcelExportService implements ExternalResource, BaseExcelExportServ
405
410
  if (Array.isArray(columns)) {
406
411
  // Populate the Grouped Column Header, pull the columnGroup(Key) defined
407
412
  columns.forEach((columnDef) => {
408
- let groupedHeaderTitle = '';
409
- if (columnDef.columnGroupKey && this._gridOptions.enableTranslate && this._translaterService?.translate) {
410
- groupedHeaderTitle = this._translaterService.translate(columnDef.columnGroupKey);
411
- } else {
412
- groupedHeaderTitle = columnDef.columnGroup || '';
413
- }
413
+ const groupedHeaderTitle =
414
+ columnDef.columnGroupKey && this._gridOptions.enableTranslate && this._translaterService?.translate
415
+ ? this._translaterService.translate(columnDef.columnGroupKey)
416
+ : columnDef.columnGroup || '';
417
+
414
418
  const skippedField = columnDef.excludeFromExport || false;
415
419
 
416
420
  // if column width is 0px, then we consider that field as a hidden field and should not be part of the export
@@ -457,36 +461,96 @@ export class ExcelExportService implements ExternalResource, BaseExcelExportServ
457
461
 
458
462
  /**
459
463
  * Get all the grid row data and return that as an output string
464
+ * Async version of pushAllGridRowDataToArray with yielding for UI responsiveness during large dataset processing.
465
+ * Processes rows directly from DataView with periodic yielding for responsiveness.
460
466
  */
461
- protected pushAllGridRowDataToArray(
467
+ protected async pushAllGridRowDataToArrayAsync(
462
468
  originalDaraArray: Array<Array<string | ExcelColumnMetadata | number>>,
463
469
  columns: Column[]
464
- ): Array<Array<string | ExcelColumnMetadata | number>> {
465
- const lineCount = this._dataView.getLength();
470
+ ): Promise<Array<Array<string | ExcelColumnMetadata | number>>> {
471
+ const dataView = this._dataView;
472
+ const lineCount = dataView.getLength();
473
+
474
+ // Yield periodically based on dataset size
475
+ const YIELD_FREQUENCY = lineCount < 1000 ? 0 : lineCount < 10000 ? 1000 : 500;
466
476
 
467
- // loop through all the grid rows of data
477
+ // Update the hasGroupedItems flag from current grouping
478
+ const grouping = dataView.getGrouping();
479
+ this._hasGroupedItems = Array.isArray(grouping) && grouping.length > 0;
480
+
481
+ // Read rows directly from DataView
468
482
  for (let rowNumber = 0; rowNumber < lineCount; rowNumber++) {
469
- const itemObj = this._dataView.getItem(rowNumber);
483
+ const itemObj = dataView.getItem(rowNumber);
470
484
 
471
485
  // make sure we have a filled object AND that the item doesn't include the "getItem" method
472
486
  // this happen could happen with an opened Row Detail as it seems to include an empty Slick DataView (we'll just skip those lines)
473
487
  if (itemObj && !itemObj.hasOwnProperty('getItem')) {
474
488
  // Normal row (not grouped by anything) would have an ID which was predefined in the Grid Columns definition
475
489
  if (itemObj[this._datasetIdPropName] !== null && itemObj[this._datasetIdPropName] !== undefined) {
476
- // get regular row item data
490
+ // Read a regular row
477
491
  originalDaraArray.push(this.readRegularRowData(columns, rowNumber, itemObj, rowNumber));
478
492
  } else if (this._hasGroupedItems && itemObj.__groupTotals === undefined) {
479
493
  // get the group row
480
494
  originalDaraArray.push([this.readGroupedRowTitle(itemObj)]);
481
495
  } else if (itemObj.__groupTotals) {
482
- // else if the row is a Group By and we have agreggators, then a property of '__groupTotals' would exist under that object
496
+ // else if the row is a Group By and we have aggregators, then a property of '__groupTotals' would exist under that object
483
497
  originalDaraArray.push(this.readGroupedTotalRows(columns, itemObj, rowNumber));
484
498
  }
485
499
  }
500
+
501
+ // Yield to event loop
502
+ if (YIELD_FREQUENCY > 0 && rowNumber > 0 && rowNumber % YIELD_FREQUENCY === 0) {
503
+ await new Promise((resolve) => setTimeout(resolve, 0));
504
+ }
486
505
  }
506
+
487
507
  return originalDaraArray;
488
508
  }
489
509
 
510
+ /** OPTIMIZATION: Pre-calculate column metadata to avoid repeated calculations */
511
+ protected preCalculateColumnMetadata(columns: Column[]): Map<string, any> {
512
+ const cache = new Map();
513
+
514
+ // OPTIMIZATION: Pre-calculate if we have complex spanning to avoid checking on every row
515
+ const hasComplexSpanning = this._gridOptions.enableCellRowSpan || columns.some((col) => col.colspan || col.rowspan);
516
+
517
+ for (const columnDef of columns) {
518
+ if (!columnDef.excludeFromExport) {
519
+ const fieldType = getColumnFieldType(columnDef);
520
+ const exportOptions = { ...this._excelExportOptions };
521
+
522
+ // Pre-calculate date formatting logic
523
+ if (columnDef.exportWithFormatter !== false && isColumnDateType(fieldType)) {
524
+ exportOptions.exportWithFormatter = true;
525
+ }
526
+
527
+ cache.set(String(columnDef.id), {
528
+ fieldType,
529
+ exportOptions,
530
+ hasFormatter: !!columnDef.formatter,
531
+ sanitizeData: columnDef.sanitizeDataExport || this._excelExportOptions.sanitizeDataExport,
532
+ field: columnDef.field,
533
+ hasComplexSpanning, // Cache this to avoid repeated checks
534
+ });
535
+ }
536
+ }
537
+
538
+ return cache;
539
+ }
540
+
541
+ /** OPTIMIZATION: Efficient yielding - use the fastest available method */
542
+ protected async efficientYield(): Promise<void> {
543
+ // Use scheduler.postTask if available (Chrome 94+) - fastest
544
+ if (typeof (globalThis as any).scheduler?.postTask === 'function') {
545
+ return new Promise((resolve) => {
546
+ (globalThis as any).scheduler.postTask(resolve, { priority: 'user-blocking' });
547
+ });
548
+ }
549
+
550
+ // Use setTimeout(0) - most reliable and often fastest
551
+ return new Promise((resolve) => setTimeout(resolve, 0));
552
+ }
553
+
490
554
  /**
491
555
  * Get the data of a regular row (a row without grouping)
492
556
  * @param {Array<Object>} columns - column definitions
@@ -733,11 +797,16 @@ export class ExcelExportService implements ExternalResource, BaseExcelExportServ
733
797
  return outputStrings;
734
798
  }
735
799
 
736
- /** Legacy (non-streaming) Excel export fallback method */
737
- protected legacyExcelExport(filename: string, mimeType: string, resolve: (value: boolean) => void): void {
738
- downloadExcelFile(this._workbook, filename, { mimeType }).then(() => {
800
+ /** Async version of legacy Excel export fallback method */
801
+ protected async legacyExcelExportAsync(filename: string, mimeType: string): Promise<boolean> {
802
+ try {
803
+ await downloadExcelFile(this._workbook, filename, { mimeType });
739
804
  this._pubSubService?.publish(`onAfterExportToExcel`, { filename, mimeType });
740
- resolve(true);
741
- });
805
+ return true;
806
+ } catch (error) {
807
+ console.error('Legacy Excel export failed:', error);
808
+ this._pubSubService?.publish('onAfterExportToExcel', { error });
809
+ return false;
810
+ }
742
811
  }
743
812
  }