dashboard-400355-web-dashboard-integrate-dashboard-component-aspnet-core-dashboard-control-manage-exporting-capabilities.md
The Web Dashboard allows users to export an entire dashboard or individual dashboard items.
The ASP.NET Core Dashboard control’s server-side API allows you to customize the default export options, customize export documents at runtime, etc.
DashboardExportOptionBuilder.AllowExportDashboardSpecifies whether end-users can export a dashboard.DashboardExportOptionBuilder.AllowExportDashboardItemsSpecifies whether the dashboard items can be exported by end-users.DashboardExportOptionBuilder.PdfExportOptionsContains options which define how the dashboard item is exported to the PDF format.DashboardExportOptionBuilder.ImageExportOptionsContains options which define how the dashboard item is exported to the Image format.DashboardExportOptionBuilder.ExcelExportOptionsContains options which define how the dashboard item is exported to the Excel format.DashboardExportOptionBuilder.OnExportDialogHiddenA handler for the event that occurs when the export dialog is hidden.DashboardExportOptionBuilder.OnExportDialogShowingA handler for the event that occurs before the export dialog is shown.DashboardExportOptionBuilder.OnExportDialogShownA handler for the event that occurs after the export dialog is shown.
The AspNetCoreDashboardExporter class allows you to implement server export for the ASP.NET Core Dashboard Control. AspNetCoreDashboardExporter uses information stored in a dashboard sate to determine the currently selected filters, drill-down levels and parameter values. The state overrides default values specified in dashboard items and parameters. An empty state for the AspNetCoreDashboardExporter means that an end-user has cleared all filters and parameters, and canceled all drill-down operations. The AspNetCoreDashboardExporter inherits members of the WebDashboardExporter class.
Pass the default instance of the DashboardConfigurator to the AspNetCoreDashboardExporter constructor and call the inherited WebDashboardExporter methods:
WebDashboardExporter.ExportDashboardItemToExcelExports the dashboard item to the specified stream in Excel format.WebDashboardExporter.ExportDashboardItemToImageExports the dashboard item to the specified stream in Image format.WebDashboardExporter.ExportDashboardItemToPdfExports the dashboard item to the specified stream in PDF format.WebDashboardExporter.ExportToExcelExports a dashboard to the specified stream in Excel format.WebDashboardExporter.ExportToImageExports a dashboard to the specified stream in Image format.WebDashboardExporter.ExportToPdfExports a dashboard to the specified stream in PDF format.
You can use the non-visual DashboardExporter component to implement server-side export of a dashboard or dashboard items without referencing dashboard UI controls ( DashboardDesigner, DashboardViewer, ASPxDashboard, and so on) or DashboardConfigurator.
To integrate the DashboardExporter into a service, register the DevExpress NuGet feed as a package source and install the DevExpress.Dashboard.Core package. See the DashboardExporter class description for details.
View Example: Export Dashboards in a Console Application
View Example: How to Email a Dashboard
View Example: Email a Dashboard with Different Data Depending on the Addressee
The WebDashboardExporter class allows you to implement server export for the ASP.NET MVC Dashboard extension and ASP.NET Core Dashboard control. You can specify a dashboard state and export options to be applied to the resulting document. Refer to the WebDashboardExporter class description for more information.
You can use the Web Dashboard’s client-side API for exporting to various formats, customizing export options, etc. For this, use the members of the DashboardExportExtension:
exportToPdfExports the entire dashboard to a PDF file.exportToImageExports the entire dashboard to an image.exportToExcelExports the entire dashboard to an Excel file.exportDashboardItemToPdf(itemName)Exports a dashboard item to a PDF file.exportDashboardItemToImage(itemName)Exports a dashboard item to an image.exportDashboardItemToExcel(itemName)Exports a dashboard item to an Excel file.getPdfExportOptionsReturns options related to exporting a dashboard/dashboard item to PDF format.getImageExportOptionsReturns options related to exporting a dashboard/dashboard item to the Image format.getExcelExportOptionsReturns options related to exporting a dashboard/dashboard item to Excel format.setPdfExportOptions(options)Sets options related to exporting a dashboard/dashboard item to PDF format.setImageExportOptions(options)Sets options related to exporting a dashboard/dashboard item to the Image format.setExcelExportOptions(options)Sets options related to exporting a dashboard/dashboard item to Excel format.showExportDashboardDialog(format)Invokes the dialog that allows end-users to export the entire dashboard to the specified format.showExportDashboardItemDialog(itemComponentName, format)Invokes the dialog that allows end users to export the dashboard item to the specified format.
View Example: How to export all dashboard items into the same PDF document
View Example: How to Use MailKit to Send a Dashboard as a Document in PDF
Refer to the following article for information about exporting specifics on a non-Windows platform: ASP.NET Core Dashboard Control on Linux and MacOS.
The Dashboard Control raises the ASPxDashboard.CustomExport/DashboardConfigurator.CustomExport event before saving the exported document to the PDF and Image formats. The event allows you to customize the exported document.
The following table illustrates dashboard items and their corresponding printable XRControls:
The following example shows how to customize dashboard items in the exported document when you handle the ASPxDashboard.CustomExport / DashboardConfigurator.CustomExport events. You can use the CustomExportWebEventArgs.GetPrintableControls method to obtain the printable controls.
using DevExpress.DashboardCommon;
using DevExpress.DashboardWeb;
using DevExpress.XtraCharts;
using DevExpress.XtraReports.UI;
using System;
using System.Drawing;
using System.Linq;
protected void CustomizeExport(object sender, CustomExportWebEventArgs e) {
foreach(var printControl in e.GetPrintableControls()) {
if(printControl.Value is XRGaugeDashboardItem) {
var gaugeItemName = printControl.Key;
var gaugeDashboardItem = e.GetDashboardItem(gaugeItemName) as GaugeDashboardItem;
foreach(var dashGaugeElement in gaugeDashboardItem.Gauges) {
foreach(var gaugePanel in e.GetGaugeContext(gaugeItemName).GetPrintableGauges(dashGaugeElement).Cast<XRDashboardGauge>()) {
if(gaugePanel != null) {
gaugePanel.MainSeriesLabel.ForeColor = Color.Red;
}
}
}
}
if(printControl.Value is XRChart) {
var chartItemName = printControl.Key;
var chartDashboardItem = e.GetDashboardItem(chartItemName) as ChartDashboardItem;
foreach(var pane in chartDashboardItem.Panes) {
if(pane.Series.Count > 0) {
foreach(var dashSeries in pane.Series) {
if(dashSeries != null) {
var controlSeries = e.GetChartContext(chartItemName).GetControlSeries(dashSeries);
if(controlSeries != null) {
foreach(var ser in controlSeries) {
LineSeriesView view = ser.View as LineSeriesView;
if(view != null) {
view.LineStyle.DashStyle = DashStyle.DashDot;
}
}
}
}
}
}
}
}
}
}
Imports DevExpress.DashboardCommon
Imports DevExpress.DashboardWeb
Imports DevExpress.XtraCharts
Imports DevExpress.XtraReports.UI
Imports System
Imports System.Drawing
Imports System.Linq
Protected Sub ASPxDashboard1_CustomExport(ByVal sender As Object, ByVal e As CustomExportWebEventArgs)
For Each printControl In e.GetPrintableControls()
If TypeOf printControl.Value Is XRGaugeDashboardItem Then
Dim gaugeItemName = printControl.Key
Dim gaugeDashboardItem = TryCast(e.GetDashboardItem(gaugeItemName), GaugeDashboardItem)
For Each dashGaugeElement In gaugeDashboardItem.Gauges
For Each gaugePanel In e.GetGaugeContext(gaugeItemName).GetPrintableGauges(dashGaugeElement).Cast(Of XRDashboardGauge)()
If gaugePanel IsNot Nothing Then
gaugePanel.MainSeriesLabel.ForeColor = Color.Red
End If
Next gaugePanel
Next dashGaugeElement
End If
If TypeOf printControl.Value Is XRChart Then
Dim chartItemName = printControl.Key
Dim chartDashboardItem = TryCast(e.GetDashboardItem(chartItemName), ChartDashboardItem)
For Each pane In chartDashboardItem.Panes
If pane.Series.Count > 0 Then
For Each dashSeries In pane.Series
If dashSeries IsNot Nothing Then
Dim controlSeries = e.GetChartContext(chartItemName).GetControlSeries(dashSeries)
If controlSeries IsNot Nothing Then
For Each ser In controlSeries
Dim view As LineSeriesView = TryCast(ser.View, LineSeriesView)
If view IsNot Nothing Then
view.LineStyle.DashStyle = DashStyle.DashDot
End If
Next ser
End If
End If
Next dashSeries
End If
Next pane
End If
Next printControl
End Sub
The following example shows how to specify header and footer content of an exported dashboard. For this, the CustomExport event is used.
View Example: ASP.NET Web Forms
The following example shows how to add a custom header to each sheet for the exported Excel workbook. For this, the CustomizeExportDocument event is used.
View Example: ASP.NET Web Forms
The following example shows how to export a dashboard with different dashboard states (different master filter value) to separate pages and join them to a single PDF document. Multiple exported documents are joined in a single file with the help of the PdfDocumentProcessor class.
View Example: ASP.NET Web Forms
This example shows how to use the DashboardExporter component in a console application to export a dashboard with a custom Funnel item.
See Also