Export a paginated report to Microsoft Excel (Report Builder)
Applies to:
Microsoft Report Builder (SSRS)
Power BI Report Builder
Report Designer in SQL Server Data Tools
The Excel rendering extension renders a paginated report to the Microsoft Excel format (.xlsx). With the Excel rendering extension, the width of columns in Excel more accurately reflects the width of columns in reports.
The format is Office Open XML. The content type of files generated by this renderer is application/vnd.openxmlformats-officedocument.spreadsheetml.sheet and the file extension is .xlsx.
You can change some default settings for this renderer by changing the device information settings. For more information, see Excel device information settings.
See Export reports (Report Builder and SSRS) for details on how to export to Excel.
Important
When you define a parameter of type String, the user is presented with a text box that can take any value. If a report parameter isn't tied to a query parameter and the parameter values are included in the report, it's possible for a report user to type expression syntax, script, or a URL into the parameter value, and render the report to Excel. If another user then views the report and selects the rendered parameter contents, the user may inadvertently execute the malicious script or link.
To mitigate the risk of inadvertently running malicious scripts, open rendered reports only from trusted sources. For more information about securing reports, see Secure Reports and Resources.
Excel limitations
Microsoft Excel places limitations on exported reports due to the capabilities of Excel and its file formats. The following limitations are most significant:
The maximum column width is limited to 255 characters or 1726.5 points. The renderer doesn't verify that the column width is less than the limit.
The maximum number of characters in a cell is limited to 32,767. If this limit is exceeded, the renderer displays an error message.
The maximum row height is 409 points. If the contents of the row cause the row height to increase beyond 409 points, the Excel cell shows a partial amount of text up to 409 points. The rest of the cell contents is still within the cell (up to Excel's max number of characters of 32,767).
Because the maximum row height is 409 points, if the defined height of the cell in the report is something larger than 409 points, Excel splits the cell contents into multiple rows.
The maximum number of worksheets isn't defined in Excel, but external factors, such as memory and disk space, might cause limitations to be applied.
In outlines, Excel permits up to seven nested levels only.
The outline is disabled if the report item that controls whether another item can be toggled isn't in the previous or next row. It also disables if it isn't in the column of the item being toggled.
For more information about Excel limitations, see Excel specifications and limits.
Sizes of Excel 2003 (.xls) files
Important
The Microsoft Excel 2003 rendering extension is deprecated. For more information, see Deprecated Features in SQL Server Reporting Services in SQL Server 2016.
When reports are first exported and saved to Excel 2003, they don't benefit from the file optimization that Excel automatically applies to its *.xls workbook files. The larger file size can cause problems for e-mail subscriptions and attachments. To reduce the size of the *.xls
files for exported reports, open the *.xls
files and then resave the workbooks. Resaving the workbooks typically reduces their file sizes by 40 to 50 percent.
Note
In Excel 2003, approximately 1000 characters are displayed in an Excel cell on the worksheet but up to the maximum number of characters can be edited in the formula bar. This limitation does not apply to current Excel (.xlsx) files.
Text boxes and text
The following limitations apply to text boxes and text:
Text box values that are expressions aren't converted to Excel formulas. The value of each text box is evaluated during report processing. The evaluated expression is exported as the contents of each Excel cell.
Text boxes are rendered within one Excel cell. Font size, font face, decoration, and font style are the only formatting that is supported on individual text within an Excel cell.
The text effect "Overline" isn't supported in Excel.
Excel adds a default padding of approximately 3.75 points to the left and right sides of cells. If a text box's padding settings are less than 3.75 points and is barely wide enough to accommodate the text, the text might wrap in Excel.
Note
To work around this issue, increase the width of the text box in the report.
Images
The following limitations apply to images:
Background images for report items are ignored because Excel doesn't support background images for individual cells.
The Excel rendering extension only supports the background image of the report body. If a report body background image is displayed in the report, the image is rendered as a worksheet background image.
Rectangles
The following limitation applies to rectangles.
- Rectangles in report footers aren't exported to Excel. However, rectangles in the report body, tablix cells, and so forth, are rendered as a range of Excel cells.
Report headers and footers
The following limitations apply to report headers and footers:
Excel headers and footers support a maximum of 256 characters including markup. The rendering extension truncates the string at 256 characters.
Reporting Services doesn't support margins on report headers and footers. When exported to Excel, these margin values are set to zero and any header or footer that contains multiple rows of data might not print multiple rows, depending on the printer settings.
Text boxes in a header or footer maintain their formatting but not their alignment when exported to Excel. This result occurs because leading and trailing spaces are trimmed when the report is rendered to Excel.
Merge cells
The following limitation applies to merging cells:
- If cells are merged, word-wrap doesn't work correctly. If any merged cells exist on a row where a text box is rendered with the Auto-Size property, autosize doesn't work.
The Excel renderer is primarily a layout renderer. Its goal is to replicate the layout of the rendered report as closely as possibly in an Excel worksheet and so cells might be merged in the worksheet to preserve the report layout. Merged cells can cause problems because the sort functionality in Excel requires cells to be merged in a specific way for sort to work properly. For example, Excel requires that the ranges of merged cells have the same size in order to be sorted.
If it's important that reports exported to Excel worksheets can be sorted, then the following information can help you reduce the number of merged cells in your Excel worksheets. This reason is the common cause for difficulties with Excel sort functionality.
Not aligning items left and right is the most common cause of merged cells. Make sure the left and right edges of all report items line up with one another. Making items align and the same width solves the problem in most cases.
Although you align all items precisely, you might find in some rare cases that some columns continue to be merged. Internal unit conversion and rounding when the Excel worksheet is rendered causes this outcome. In the report definition language (RDL), you can specify position and size in different measurement units such as inches, pixels, centimeters, and points. Internally the Excel uses points. To minimize conversion and the potential inaccuracy of rounding when converting inches and centimeters to points, consider specifying all measurements in whole points for the most direct results. An inch is 72 points.
Report row groups and column groups
Reports that include row groups or column groups contain empty cells when exported to Excel. Imagine a report that groups rows on commute distance. Each commute distance can contain more than one customer. The following picture shows the report.
When the report is exported to Excel, the commute distance appears only in one cell of the Commute Distance column. Depending on the alignment of the text in the report (top, middle, or bottom) the value is in the first, middle, or last cell. The other cells are empty. The Name column that contains customer names has no empty cells. The following picture shows the report after your export to Excel. The red cell borders were added for emphasis. The gray boxes are the empty cells. The red lines and the gray boxes aren't part of the exported report.
Reports with row groups or column groups require modification after exporting to Excel and before you can display the exported data in a PivotTable. You must add the group value to cells in which they're missing. Thus, the worksheet becomes a flat table with values in all cells. The following picture shows the updated worksheet.
So if you create a report for the specific purpose of exporting it to Excel for further analysis of the report data, consider not grouping on rows or columns in your report.
Excel renderer
Current (.xlsx) Excel file renderer
In SQL Server Reporting Services, the default Excel renderer is the version compatible with current (.xlsx) Microsoft Excel files. This option is the Excel option on the Exporting menus in the Reporting Services web portal and SharePoint list.
When you use the default Excel renderer, instead of the earlier Excel 2003 (.xls) renderer, you can install the Microsoft Office Compatibility Pack for Word, Excel, and PowerPoint. This renderer allows earlier versions of Excel to open the files that are exported.
Excel 2003 (.xls) renderer
Important
The Microsoft Excel 2003 rendering extension is deprecated. For more information, see Deprecated features in SQL Server Reporting Services in SQL Server 2016.
The earlier version of the Excel renderer, compatible with Excel 2003, is now named Excel 2003 and is listed on menus using that name. The content type of files generated by this renderer is application/vnd.ms-excel
and the file name extension of files is .xls.
By default, the Excel 2003 menu option isn't visible. An administrator can make it visible under certain circumstances by updating the RSReportServer
configuration file. To export reports from SQL Server Data Tools (SSDT) using the Excel 2003 renderer, you update the RSReportDesigner
configuration file.
The Excel 2003 menu option extension is never visible in the following scenarios:
Report Builder in disconnected mode and you preview a report in Report Builder. Because the
RSReportServer
configuration file resides on the report server, the tools or products from where you export reports must be connected to a report server to read the configuration file.Report Viewer Web Part in local mode and the SharePoint farm isn't integrated with a Reporting Services report server. For more information, see Local mode vs. connected mode reports in the Report Viewer (Reporting Services in SharePoint mode)
If the Excel 2003 menu option renderer is configured to be visible, both the Excel and Excel 2003 options are available in the following scenarios:
Reporting Services web portal native mode.
SharePoint site when Reporting Services is installed in SharePoint integrated mode.
SQL Server Data Tools (SSDT) and you preview reports.
Report Builder connected to a report server.
The Report Viewer Web Part in remote mode.
The following XML shows the elements for the two Excel rendering extensions in the RSReportServer and RSReportDesigner configuration files:
<Extension Name="EXCELOPENXML" Type="Microsoft.ReportingServices.Rendering.ExcelOpenXmlRenderer.ExcelOpenXmlRenderer,Microsoft.ReportingServices.ExcelRendering"/>
<Extension Name="EXCEL" Type="Microsoft.ReportingServices.Rendering.ExcelRenderer.ExcelRenderer,Microsoft.ReportingServices.ExcelRendering" Visible="false"/>
The EXCELOPENXML extension defines the Excel renderer for current (.xlsx) Excel files. The EXCEL extension defines the Excel 2003 version. Visible = "false"
indicates the Excel 2003 renderer is hidden. For more information, see RsReportServer.config configuration file and RSReportDesigner configuration file.
Differences between the current (.xlsx) Excel and Excel 2003 renderers
Reports, rendered by using the current (.xlsx) Excel or the Excel 2003 renderers are typically identical and only under rare circumstances do you notice differences between the two formats. The following table compares the Excel and the Excel 2003 renderers.
Property | Excel 2003 | Current Excel |
---|---|---|
Maximum columns per worksheet | 256 | 16,384 |
Maximum rows per worksheet | 65,536 | 1,048,576 |
Number of colors allowed in a worksheet | 56 (palette) If more than 56 colors are used in the report, the rendering extension matches the required color to one of the 56 colors already available in the custom palette. |
Approximately 16 million (24-bit color) |
ZIP compressed files | None | ZIP compression |
Default font family | Arial | Calibri |
Default font size | 10 pt | 11 pt |
Default row height | 12.75 pt | 15 pt |
Because the report explicitly sets the row height, the default row height affects only rows that are sized automatically upon export to Excel.
Report items in Excel
Subreports, rectangles, the report body, and data regions are rendered as a range of Excel cells. Text boxes, images, and charts, data bars, sparklines, maps, gauges, and indicators must be rendered within one Excel cell, which might be merged depending on the layout of the rest of the report.
Images, charts, sparklines, data bars, maps, gauges, indicators, and lines are positioned within one Excel cell but they sit on top of the cell grid. Lines are rendered as cell borders.
Charts, sparklines, data bars, maps, gauges, and indicators are exported as pictures. The data they depict isn't exported with them. The data isn't available in the Excel workbook unless you include it in a column or row in a data region within a report.
If you want to work with chart, sparkline, data bar, maps, gauge, and indicator data, export the report to a .csv file or generate Atom-compliant data feeds from the report. For more information, see Export to a CSV file (Report Builder and SSRS) and Generate data feeds from reports (Report Builder and SSRS).
Page size
The Excel rendering extension uses the page height and width settings to determine what paper setting to define in the Excel worksheet. Excel tries to match the PageHeight
and PageWidth
property settings to one of the most common paper sizes.
If no matches are found, Excel uses the default page size for the printer. Orientation is set to Portrait if the page width is less than the page height; otherwise, orientation is set to Landscape.
Worksheet tab names
When you export a report to Excel, page breaks create the report pages and those pages are exported to different worksheets. If you provided an initial page name for the report, each worksheet of the Excel workbook has this name by default. The name appears on the worksheet tab. However, since each worksheet in a workbook must have a unique name, an integer starting at 1 and incremented by 1 is appended to the initial page name for each worksheet. For example, if the initial page name is Sales Report by Fiscal Year, the second worksheet would be named Sales Report by Fiscal Year1, the third one Sales Report by Fiscal Year2, and so forth.
If all report pages created by page breaks provide new page names, each worksheet has the associated page name. However, these page names might not be unique. If page names aren't unique, the worksheets are named the same way as initial page names. For example, if the page name of two groups is Sales for NW, one worksheet tab has the name Sales for NW, and the other Sales for NW1.
If the report doesn't provide an initial page name, or page names related to page breaks, the worksheet tabs have the default names Sheet1, Sheet2, and so forth.
Reporting Services provides properties to set on reports, data regions, groups, and rectangles. These properties help you create reports that can be exported to Excel in a way that you want. For more information, see Pagination in Reporting Services (Report Builder and SSRS).
Document properties
The Excel renderer writes the following metadata to the Excel file.
Report Element properties | Description |
---|---|
Created | Date and time of report execution as an ISO date/time value. |
Author | Report.Author |
Description | Report.Description |
LastSaved | Date and time of report execution as an ISO date/time value. |
Page headers and footers
Depending on the Device Information SimplePageHeaders
setting, the page header can be rendered in two ways: the page header can be rendered at the top of each worksheet cell grid, or in the actual Excel worksheet header section. By default, the header is rendered to the cell grid on the Excel worksheet.
The page footer is always rendered to the actual Excel worksheet footer section, regardless of the value of the SimplePageHeaders
setting.
Excel header and footer sections support a maximum of 256 characters, including markup. If this limit is exceeded, the Excel renderer removes markup characters starting at the end of the header and/or footer string to reduce the number of total characters. If all markup characters are removed and the length still exceeds the maximum, the string is truncated starting from the right.
SimplePageHeader settings
By default, the Device Information SimplePageHeaders
setting is set to False; therefore, the page headers are rendered as rows in the report on the Excel worksheet surface. The worksheet rows that contain the headers become locked rows. You can freeze or unfreeze the pane in Excel. If the Print Titles option is selected, these headers are automatically set to print on every worksheet page.
The page header repeats at the top of every worksheet in the workbook except the document map cover sheet if the Print Titles option is selected on the Page Layout tab in Excel. If the Print on first page or the Print on last page option isn't selected in the Report Header Properties or Report Footer Properties dialog boxes, the header isn't added to the first or last page respectively.
Page footers are rendered in the Excel footer section.
Because of Excel limitations, text boxes are the only type of report item that can be rendered in the Excel header/footer section.
Interactivity
Some interactive elements are supported in Excel. The following section is a description of specific behaviors.
Show and Hide
Microsoft Excel has limitations with how it manages hidden and displayed report items when they're exported. Groups, rows, and columns that contain report items that can be toggled are rendered as Excel outlines. Excel creates outlines that expand and collapse rows and columns across the entire row or column. This result can cause the collapse of report items that aren't intended to be collapsed. In addition, Excel's outlining symbols can become cluttered with overlapping outlines. To address these issues, the following outlining rules are applied when using the Excel rendering extension:
The report item in the top-left corner that can be toggled can continue to be toggled in Excel. Report items that can be toggled and share vertical or horizontal space with the report item that can be toggled in the top-left corner can't be toggled in Excel.
To determine whether a data region is collapsible by rows or columns, the position of the report item that controls the toggling is considered. Additionally, the position of the report item that is toggled is taken into account. If the item controlling the toggling appears before the item to be toggled, the item is collapsible by rows. Otherwise, the item is collapsible by columns. If the item controlling the toggling appears beside and above the area to be toggled equally, the item is rendered with row collapsible by rows.
To determine where the subtotals are placed in the rendered report, the rendering extension examines the first instance of a dynamic member. If a peer static member appears immediately above it, the dynamic member is assumed to be the subtotals. Outlines are set to indicate that this data is summary data. If there are no static siblings of a dynamic member, the first instance of the instance is the subtotal.
Due to an Excel limitation, outlines can be nested up to seven levels only.
Document map
If any document map labels exist in the report, a document map is rendered. The document map is rendered as an Excel cover worksheet inserted at the first tab position in the workbook. The worksheet is named Document map.
The report item's or group's DocumentMapLabel
property determine the text displayed in the document map. Document map labels are listed in the order that they appear in the report, starting at the first row, in the first column. Each document map label cell is indented the number of levels deep it appears in the report. Each level of indentation is represented by placing the label in a subsequent column. Excel supports up to 256 levels of outline nesting.
The document map outline is rendered as a collapsible Excel outline. The outline structure matches the nested structure of the document map. The expand and collapse state of the outline starts at the second level.
The root node of the map is the report name, the <reportname>.rdl
, and it isn't interactive. The document map links font is Arial, 10 pt.
Drillthrough links
Drillthrough links that appear in text boxes are rendered as Excel hyperlinks in the cell in which the text is rendered. Drillthrough links for images and charts are rendered as Excel hyperlinks on the image when rendered. When selected, the drillthrough link opens the client's default browser and navigates to the HTML view of the target.
Hyperlinks
Hyperlinks that appear in text boxes are rendered as Excel hyperlinks in the cell in which the text is rendered. Hyperlinks for images and charts are rendered as Excel hyperlinks on the image when rendered. When selected, the hyperlink opens the client's default browser and navigates to the target URL.
Interactive sort
Excel doesn't support interactive sort.
Bookmarks
Bookmark links in text boxes are rendered as Excel hyperlinks in the cell in which the text is rendered. Bookmark links for images and charts are rendered as Excel hyperlinks on the image when rendered. When selected, the bookmark goes to the Excel cell in which the bookmarked report item is rendered.
Change reports at run-time
If a report must render to multiple formats and it isn't possible to create a report layout that renders the way you want in all required formats, then you might consider using the value in the RenderFormat
built-in global. This value allows you to conditionally change the report appearance at runtime. This way you can hide or show report items depending on the renderer used to get the best results in each format. For more information, see Built-in globals and users references (Report Builder and SSRS).
Troubleshoot export to Excel
Export to Excel or Word fails when you use the Virtual Service account and Execution account
The workaround for this issue is to give Read permission to the Execution account for the described registry entry under the Virtual User Account branch, and restart the computer. For example, one possible registry entry is HKEY_USERS\S-1-5-80-4050220999-2730734961-1537482082-519850261-379003301\Software\Microsoft\Avalon.Graphics
.