From f1467cdd72de9f22ef7e433df114523663b7dabe Mon Sep 17 00:00:00 2001 From: Chris Kaczor Date: Wed, 11 Oct 2023 22:50:22 -0400 Subject: [PATCH] Improves "save as Excel" functionality (#24653) --- src/sql/azdata.proposed.d.ts | 22 +++++++++++++++++++ src/sql/platform/query/common/query.ts | 4 ++++ .../query/browser/query.contribution.ts | 20 +++++++++++++++++ .../services/query/common/resultSerializer.ts | 12 ++++++++++ 4 files changed, 58 insertions(+) diff --git a/src/sql/azdata.proposed.d.ts b/src/sql/azdata.proposed.d.ts index f66493b4e7..7f13645ca0 100644 --- a/src/sql/azdata.proposed.d.ts +++ b/src/sql/azdata.proposed.d.ts @@ -2544,4 +2544,26 @@ declare module 'azdata' { */ splitViewSize?: number | string | undefined; } + + export interface SaveResultsRequestParams { + /** + * Whether to freeze the header row when saving as Excel. + */ + freezeHeaderRow?: boolean | undefined; + + /** + * Whether to bold the header row when saving as Excel. + */ + boldHeaderRow?: boolean | undefined; + + /** + * Whether to enable auto filter on the header row when saving as Excel. + */ + autoFilterHeaderRow?: boolean | undefined; + + /** + * Whether to auto size columns when saving as Excel. + */ + autoSizeColumns?: boolean | undefined; + } } diff --git a/src/sql/platform/query/common/query.ts b/src/sql/platform/query/common/query.ts index d70ccc957d..1613b3a15e 100644 --- a/src/sql/platform/query/common/query.ts +++ b/src/sql/platform/query/common/query.ts @@ -14,6 +14,10 @@ export interface IQueryEditorConfiguration { }; readonly saveAsExcel: { readonly includeHeaders: boolean; + readonly freezeHeaderRow: boolean; + readonly boldHeaderRow: boolean; + readonly autoFilterHeaderRow: boolean; + readonly autoSizeColumns: boolean; }; readonly saveAsMarkdown: { readonly encoding: string; diff --git a/src/sql/workbench/contrib/query/browser/query.contribution.ts b/src/sql/workbench/contrib/query/browser/query.contribution.ts index 90ae87146c..e6aeb770bf 100644 --- a/src/sql/workbench/contrib/query/browser/query.contribution.ts +++ b/src/sql/workbench/contrib/query/browser/query.contribution.ts @@ -258,6 +258,26 @@ const queryEditorConfiguration: IConfigurationNode = { 'description': localize('queryEditor.results.saveAsExcel.includeHeaders', "When true, column headers are included when saving results as an Excel file"), 'default': true }, + 'queryEditor.results.saveAsExcel.freezeHeaderRow': { + 'type': 'boolean', + 'description': localize('queryEditor.results.saveAsExcel.freezeHeaderRow', "When true, freeze the header row when saving results as an Excel file"), + 'default': false + }, + 'queryEditor.results.saveAsExcel.autoFilterHeaderRow': { + 'type': 'boolean', + 'description': localize('queryEditor.results.saveAsExcel.autoFilterHeaderRow', "When true, enable auto filtering on the header row when saving results as an Excel file"), + 'default': false + }, + 'queryEditor.results.saveAsExcel.autoSizeColumns': { + 'type': 'boolean', + 'description': localize('queryEditor.results.saveAsExcel.autoSizeColumns', "When true, attempt to automatically size columns when saving results as an Excel file"), + 'default': false + }, + 'queryEditor.results.saveAsExcel.boldHeaderRow': { + 'type': 'boolean', + 'description': localize('queryEditor.results.saveAsExcel.boldHeaderRow', "When true, make the header row bold when saving results as an Excel file"), + 'default': false + }, 'queryEditor.results.saveAsCsv.encoding': { 'type': 'string', 'description': localize('queryEditor.results.saveAsCsv.encoding', "File encoding used when saving results as CSV"), diff --git a/src/sql/workbench/services/query/common/resultSerializer.ts b/src/sql/workbench/services/query/common/resultSerializer.ts index a256d672a0..930cdb334b 100644 --- a/src/sql/workbench/services/query/common/resultSerializer.ts +++ b/src/sql/workbench/services/query/common/resultSerializer.ts @@ -259,6 +259,18 @@ export class ResultSerializer { if (saveConfig.includeHeaders !== undefined) { saveResultsParams.includeHeaders = saveConfig.includeHeaders; } + if (saveConfig.freezeHeaderRow !== undefined) { + saveResultsParams.freezeHeaderRow = saveConfig.freezeHeaderRow; + } + if (saveConfig.boldHeaderRow !== undefined) { + saveResultsParams.boldHeaderRow = saveConfig.boldHeaderRow; + } + if (saveConfig.autoFilterHeaderRow !== undefined) { + saveResultsParams.autoFilterHeaderRow = saveConfig.autoFilterHeaderRow; + } + if (saveConfig.autoSizeColumns !== undefined) { + saveResultsParams.autoSizeColumns = saveConfig.autoSizeColumns; + } } return saveResultsParams;