The Report Viewer provides events and properties to control and customize the report export functionality.
You can show the progress information, when the exporting takes long time to complete using the exportProgressChanged
event.
exportProgressChanged
in Report Viewer initialization. <body style="overflow: hidden; position: static; margin: 0; padding: 0; height: 100%; width: 100%;">
<div id="viewer" style="position: absolute; height: 100%; width: 100%;"></div>
<script src="index.js"></script>
</body>
function onExportProgressChanged(args) {
if (args.stage === "beginExport") {
console.log(args.stage);
args.format =
$('#viewer').ejWaitingPopup({ showOnInit: true, cssClass: "customStyle", text: "Preparing exporting document.. Please wait..." });
}
else if (args.stage === "exportStarted") {
console.log(args.stage);
var popupObj1 = $('#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 = $('#viewer').data('ejWaitingPopup');
popupObj2.setModel({ text: "Preparing exporting document.." + progressPercentage + " % completed.. Please wait..." });
}
}
}
}
args.handled = true;
}
$(function () {
$("#viewer").boldReportViewer({
reportServiceUrl: "https://demos.boldreports.com/services/api/ReportViewer",
reportPath: '~/Resources/docs/sales-order-detail.rdl',
exportProgressChanged: onExportProgressChanged
});
});
You can view the Web API service used in the above code from the Reporting Service git hub location. For more information, see Samples and demos.
This allows you to change the default file format to any other file format using the excelFormat
and wordFormat
properties. The following code sample changes the default versions.
<body style="overflow: hidden; position: static; margin: 0; padding: 0; height: 100%; width: 100%;">
<div id="viewer" style="position: absolute; height: 100%; width: 100%;"></div>
<script src="index.js"></script>
</body>
$(function () {
$("#viewer").boldReportViewer({
reportServiceUrl: "https://demos.boldreports.com/services/api/ReportViewer",
reportPath: '~/Resources/docs/sales-order-detail.rdl',
exportSettings: {
excelFormat: ej.ReportViewer.ExcelFormats.Excel2013,
wordFormat: ej.ReportViewer.WordFormats.Word2013
}
});
});
Show or hide the default export types available in the component using the exportOptions
property. The following code hides the HTML export type from the default export options.
<body style="overflow: hidden; position: static; margin: 0; padding: 0; height: 100%; width: 100%;">
<div id="viewer" style="position: absolute; height: 100%; width: 100%;"></div>
<script src="index.js"></script>
</body>
$(function () {
$("#viewer").boldReportViewer({
reportServiceUrl: "https://demos.boldreports.com/services/api/ReportViewer",
reportPath: '~/Resources/docs/sales-order-detail.rdl',
exportSettings: { exportOptions: ej.ReportViewer.ExportOptions.All & ~ej.ReportViewer.ExportOptions.Html & ~ej.ReportViewer.ExportOptions.Word }
});
});
The PDFOptions
provides properties to manage PDF export behaviors. You have to set the properties in the OnInitReportOptions
method of the Web API service.
To export reports with the complex scripts, set the ComplexScript
property of PDFOptions
instance to true.
[NonAction]
public void OnInitReportOptions(ReportViewerOptions reportOption)
{
reportOption.ReportModel.PDFOptions = new BoldReports.Writer.PDFOptions()
{
EnableComplexScript = true
};
}
You can export the report as PDF/A-1b
document by specifying the conformance level PdfConformanceLevel.Pdf_A1B
in the PdfConformanceLevel
property.
[NonAction]
public void OnInitReportOptions(ReportViewerOptions reportOption)
{
reportOption.ReportModel.PDFOptions = new BoldReports.Writer.PDFOptions()
{
PdfConformanceLevel = Syncfusion.Pdf.PdfConformanceLevel.Pdf_A1B
};
}
This allows you to have custom fonts in the PDF exported document by adding the font streams to Fonts
collection in PDFOptions
instance.
.ttf
files into your application Resources
folder.Font
collection 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.
[NonAction]
public void OnInitReportOptions(ReportViewerOptions reportOption)
{
reportOption.ReportModel.PDFOptions = new BoldReports.Writer.PDFOptions()
{
//Load Missing font stream
Fonts = new Dictionary<string, System.IO.Stream>
{
{ "Segoe UI", System.IO.File.OpenRead(System.Web.Hosting.HostingEnvironment.MapPath(@"~/Resources/docs/font_symbols.ttf")) }
}
};
}
Any fonts used in the report definition that is not installed or available in the local system, then you must load the font stream. In the above code, loaded
font_symbols
font stream to exportSales Order Detail.rdl
report as symbols.
The WordOptions
provides properties to manage Word document export behaviors.
You can save the report to the required document version by setting the FormatType
property.
reportOption.ReportModel.WordOptions = new BoldReports.Writer.WordOptions()
{
FormatType = BoldReports.Writer.WordFormatType.Docx
};
Eliminate the tiny columns, rows, merged cells, and render the word document elements without nested grid layout by setting the LayoutOption
as TopLevel
. The ParagraphSpacing
is the distance value added between two elements in the document.
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 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, added an empty paragraph between two tables.
You can restrict a Word document from editing either by providing a password or without a password. The following are the types of protection.
AllowOnlyComments
: You can add or modify only the comments in the Word document.AllowOnlyFormFields
: You can modify the form field values in the Word document.AllowOnlyRevisions
: You can accept or reject the revisions in the Word document.AllowOnlyReading
: You can only view the content in the Word document.NoProtection
: You can access or edit the Word document contents as normally. reportOption.ReportModel.WordOptions = new BoldReports.Writer.WordOptions()
{
ProtectionType = Syncfusion.DocIO.ProtectionType.AllowOnlyReading
};
The ExcelOptions
provides properties to manage Excel document export behaviors.
You can save the report to the required excel version by setting the ExcelSaveType
property.
reportOption.ReportModel.ExcelOptions = new BoldReports.Writer.ExcelOptions()
{
ExcelSaveType = BoldReports.Writer.ExcelVersion.Excel2013
};
Eliminate the tiny columns, rows, and merged cells to provide clear readability and perform data manipulations by setting the LayoutOption
as IgnoreCellMerge
.
reportOption.ReportModel.ExcelOptions = new BoldReports.Writer.ExcelOptions()
{
LayoutOption = BoldReports.Writer.ExcelLayoutOptions.IgnoreCellMerge
};
You can restrict the Excel document from editing either by providing the ExcelSheetProtection
or enabling the ReadOnlyRecommended
properties.
reportOption.ReportModel.ExcelOptions = new BoldReports.Writer.ExcelOptions()
{
ReadOnlyRecommended = true,
ExcelSheetProtection = ExcelSheetProtection.DeletingColumns
};
You can save the report to the required PowerPoint version by setting the FormatType
property.
reportOption.ReportModel.PPTOptions = new BoldReports.Writer.PPTOptions()
{
FormatType = BoldReports.Writer.PPTSaveType.PowerPoint2013
};
The CsvOptions
allows you to change encoding, delimiters, qualifiers, extension, and line break of a CSV exported document.
reportOption.ReportModel.CsvOptions = new BoldReports.Writer.CsvOptions()
{
Encoding = System.Text.Encoding.Default,
FieldDelimiter = ",",
UseFormattedValues = false,
Qualifier = "#",
RecordDelimiter = "@",
SuppressLineBreaks = true,
FileExtension = ".txt"
};
You can hide the separator added at the end of each page by setting the HidePageSeparator
property to true.
reportOption.ReportModel.HTMLOptions = new BoldReports.Writer.HTMLOptions()
{
HidePageSeparator = true
};
This allows you to 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 the user defined password.
[NonAction]
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.