Export report
The Report Viewer provides events and properties to control and customize the report exporting functionality.
Export event handling
You can show the progress information, when the exporting process takes long time to complete using the OnClientExportProgressChanged event.
- Set the
OnClientExportProgressChangedevent in Report Viewer initialization. - Implement the function and replace the following code samples to show a custom message based on the progress stage.
The following code example demonstrates how to export event handling in the Report Viewer at client side.
<div style="height: 650px;width: 950px;min-height:404px;">
<Bold:ReportViewer runat="server" ID="viewer"
ReportServiceUrl="/api/ReportViewer"
ReportPath="~/Resources/sales-order-detail.rdl"
OnClientExportProgressChanged="onExportProgressChanged">
</Bold:ReportViewer>
</div>
<script type="text/javascript">
function onExportProgressChanged(args) {
if (args.stage === "beginExport") {
console.log(args.stage);
args.format =
$('#MainContent_viewer').ejWaitingPopup({ showOnInit: true, cssClass: "customStyle", text: "Preparing exporting document.. Please wait..." });
}
else if (args.stage === "exportStarted") {
console.log(args.stage);
var popupObj1 = $('#MainContent_viewer').data('ejWaitingPopup');
popupObj1.hide();
}
else if (args.stage === "preparation") {
console.log(args.stage);
console.log(args.format);
console.log(args.preparationStage);
if (args.format === "PDF" && args.preparationStage === "documentPreparation") {
console.log(args.totalPages);
console.log(args.currentPage);
if (args.totalPages > 1 && args.currentPage > 1) {
var progressPercentage = Math.floor((args.currentPage / args.totalPages) * 100);
if (progressPercentage > 0) {
var popupObj2 = $('#MainContent_viewer').data('ejWaitingPopup');
popupObj2.setModel({ text: "Preparing exporting document.." + progressPercentage + " % completed.. Please wait..." });
}
}
}
}
args.handled = true;
}
</script>Change Excel and Word export format
Allows you change the default file format to any other file format using the ExcelFormat and WordFormat properties.
-
The following code example demonstrates how to change Excel and Word export format in the Report Viewer at client side.
<div style="height: 650px;width: 950px;min-height:404px;"> <Bold:ReportViewer runat="server" ID="viewer" ReportServiceUrl="/api/ReportViewer" ReportPath="~/Resources/sales-order-detail.rdl"> </Bold:ReportViewer> </div> -
The following code example demonstrates how to change Excel and Word export format in your application’s
Page_Load()function.protected void Page_Load(object sender, EventArgs e) { this.viewer.ExportSettings = new BoldReports.Models.ReportViewer.ExportSettings(); this.viewer.ExportSettings.ExcelFormat = BoldReports.ReportViewerEnums.ExcelFormats.Excel2013; this.viewer.ExportSettings.WordFormat = BoldReports.ReportViewerEnums.WordFormats.Word2013; }
Hide specific export type for report
Show or hide the default export types available in the component using the ExportOptions property.
-
The following code example demonstrates how to hide specific export type to the report in the Report Viewer at client side.
<div style="height: 650px;width: 950px;min-height:404px;"> <Bold:ReportViewer runat="server" ID="viewer" ReportServiceUrl="/api/ReportViewer" ReportPath="~/Resources/sales-order-detail.rdl"> </Bold:ReportViewer> </div> -
The following code example demonstrates how to hide specific export type to the report in your application’s
Page_Load()function.protected void Page_Load(object sender, EventArgs e) { this.viewer.ExportSettings = new BoldReports.Models.ReportViewer.ExportSettings(); this.viewer.ExportSettings.ExportOptions = BoldReports.ReportViewerEnums.ExportOptions.All & ~BoldReports.ReportViewerEnums.ExportOptions.Html; }
PDF export options
The PDFOptions provides properties to manage PDF export behaviors. You should set the properties in the OnInitReportOptions method of the Web API service.
Export with complex scripts
To export reports with the complex scripts, set the EnableComplexScript property of PDFOptions instance to true.
public void OnInitReportOptions(ReportViewerOptions reportOption)
{
reportOption.ReportModel.PDFOptions = new BoldReports.Writer.PDFOptions()
{
EnableComplexScript = true
};
}PDF conformance
You can export the report as a PDF/A-1b document by specifying the PdfConformanceLevel.Pdf_A1B conformance level in the PdfConformanceLevel property.
public void OnInitReportOptions(ReportViewerOptions reportOption)
{
reportOption.ReportModel.PDFOptions = new BoldReports.Writer.PDFOptions()
{
PdfConformanceLevel = Syncfusion.Pdf.PdfConformanceLevel.Pdf_A1B
};
}Add custom PDF fonts
You can add custom fonts to the PDF exported document by adding the font streams to Fonts collection in PDFOptions instance.
To add custom fonts to the PDF exported document, follow these steps:
- Add the font
.ttffiles into your applicationResourcesfolder. - In the Solution Explorer, open the properties of the font file and set the
Copyproperty to Output Directory as Copy always. - Initialize the
Fontcollection and add the font stream to it.
The key value provided in the font collection should be same as in the report item font property.
public void OnInitReportOptions(ReportViewerOptions reportOption)
{
string basePath = _hostingEnvironment.WebRootPath;
reportOption.ReportModel.PDFOptions = new BoldReports.Writer.PDFOptions()
{
//Load Missing font stream
Fonts = new Dictionary<string, System.IO.Stream>
{
{ "Segoe UI", new FileStream(basePath + @"\Resources\font_symbols.ttf", FileMode.Open, FileAccess.Read) }
}
};
}If any fonts used in the report definition is not installed or available in the local system, then you should load the font stream. In the above code,
font_symbolsfont stream is loaded to export thesales-order-detail.rdlreport as symbols.
Word export options
The WordOptions provides properties to manage Word document export behaviors.
Word document type
You can save the report to the required document version by setting the FormatType property.
public void OnInitReportOptions(ReportViewerOptions reportOption)
{
reportOption.ReportModel.WordOptions = new BoldReports.Writer.WordOptions()
{
FormatType = BoldReports.Writer.WordFormatType.Docx
};
}Word document advance layout for merged cells
Eliminate the tiny columns, rows, merged cells, and render the word document elements without nested grid layout by setting the LayoutOption to TopLevel. The ParagraphSpacing is the distance value added between two elements in the document.
public void OnInitReportOptions(ReportViewerOptions reportOption)
{
reportOption.ReportModel.WordOptions = new BoldReports.Writer.WordOptions()
{
LayoutOption = BoldReports.Writer.WordLayoutOptions.TopLevel,
ParagraphSpacing = new BoldReports.Writer.ParagraphSpacing()
{
Bottom = 0.5f,
Top = 0.5f
}
};
}A paragraph element is inserted between two tables in the exported document to overcome word document auto merging behavior. The table in the word document is not a stand-alone object. If you draw two tables one after another, it will automatically get merged into a single table. To prevent this merging, add an empty paragraph between two tables.
Protecting Word document from editing
You can restrict a Word document from editing either by providing a password or without password. The following are the types of protection:
AllowOnlyComments: Adds or modifies only the comments in the Word document.AllowOnlyFormFields: Modifies the form field values in the Word document.AllowOnlyRevisions: Accepts or rejects the revisions in the Word document.AllowOnlyReading: Views the content only in the Word document.NoProtection: Accesses or edits the Word document contents as normally.
public void OnInitReportOptions(ReportViewerOptions reportOption)
{
reportOption.ReportModel.WordOptions = new BoldReports.Writer.WordOptions()
{
ProtectionType = Syncfusion.DocIO.ProtectionType.AllowOnlyReading
};
}Excel export options
The ExcelOptions provides properties to manage Excel document export behaviors.
Excel document type
You can save the report to the required excel version by setting the ExcelSaveType property.
public void OnInitReportOptions(ReportViewerOptions reportOption)
{
reportOption.ReportModel.ExcelOptions = new BoldReports.Writer.ExcelOptions()
{
ExcelSaveType = BoldReports.Writer.ExcelVersion.Excel2013
};
}Excel document advance layout for merged cells
Eliminate the tiny columns, rows, and merged cells to provide clear readability and perform data manipulations by setting the LayoutOption to IgnoreCellMerge.
public void OnInitReportOptions(ReportViewerOptions reportOption)
{
reportOption.ReportModel.ExcelOptions = new BoldReports.Writer.ExcelOptions()
{
LayoutOption = BoldReports.Writer.ExcelLayoutOptions.IgnoreCellMerge
};
}Protecting Excel document from editing
You can restrict the Excel document from editing either by providing the ExcelSheetProtection or enabling the ReadOnlyRecommended properties.
public void OnInitReportOptions(ReportViewerOptions reportOption)
{
reportOption.ReportModel.ExcelOptions = new BoldReports.Writer.ExcelOptions()
{
ReadOnlyRecommended = true,
ExcelSheetProtection = Syncfusion.XlsIO.ExcelSheetProtection.DeletingColumns
};
}CSV export options
The CsvOptions allows you to change encoding, delimiters, qualifiers, extension, and line break of a CSV exported document.
public void OnInitReportOptions(ReportViewerOptions reportOption)
{
reportOption.ReportModel.CsvOptions = new BoldReports.Writer.CsvOptions()
{
Encoding = System.Text.Encoding.Default,
FieldDelimiter = ",",
UseFormattedValues = false,
Qualifier = "#",
RecordDelimiter = "@",
SuppressLineBreaks = true,
FileExtension = ".txt"
};
}Password protect exported document
Allows you protect the exported document such as PDF, Word, Excel, and PowerPoint from unauthorized users by encrypting the document using encryption password. The following code snippet illustrates how to encrypt the exported document with user-defined password.
public void OnInitReportOptions(ReportViewerOptions reportOption)
{
//PDF encryption
reportOption.ReportModel.PDFOptions = new BoldReports.Writer.PDFOptions();
reportOption.ReportModel.PDFOptions.Security = new Syncfusion.Pdf.Security.PdfSecurity()
{
UserPassword = "password"
};
//Word encryption
reportOption.ReportModel.WordOptions = new BoldReports.Writer.WordOptions()
{
EncryptionPassword = "password"
};
//Excel encryption
reportOption.ReportModel.ExcelOptions = new BoldReports.Writer.ExcelOptions()
{
PasswordToModify = "password",
PasswordToOpen = "password"
};
//PPT encryption
reportOption.ReportModel.PPTOptions = new BoldReports.Writer.PPTOptions()
{
EncryptionPassword = "password"
};
}Password protection is not supported for HTML export format.