Export Parameter Report

To export a parameter report with the Bold Reports® ASP.NET MVC Report Writer, set the report parameter default values or modify the values with the SetParameters() method of the Report Writer instance before you save the document.

You need an ASP.NET MVC Report Writer application. If you do not have one, create it by following the ASP.NET MVC Report Writer getting started guide.

This tutorial uses the sales-order-detail.rdl report, which you can download as the sales-order-detail.rdl sample report. You can get the reports from Bold Reports® installation location. For more information, refer to samples and demos section.

How do I set report parameters before exporting?

To set report parameters before exporting, load the report in the Report Writer, pass a list of report parameters to the SetParameters() method, and then call the Save method.

  1. Create a folder Resources into the App_Data folder in your application. Copy and paste the sample RDL reports into the Resoures folder.

  2. Load the report as a stream from the application Resources folder using the FileStream class.

    public class HomeController : Controller
    {
        [HttpPost]
        public ActionResult Export(string writerFormat)
        {
            // Here, we have loaded the sample reports from application the App_Data\Resources folder.
            FileStream reportStream = new FileStream(System.Web.Hosting.HostingEnvironment.MapPath(@"\App_Data\Resources\sales-order-detail.rdl"), FileMode.Open, FileAccess.Read);
            BoldReports.Writer.ReportWriter writer = new BoldReports.Writer.ReportWriter();
            writer.ReportProcessingMode = ProcessingMode.Remote;
            ......
        }
    }
  3. You can add collection of report parameters programmatically using the ReportParameter property that is the list type of Report Parameter class. Refer to the following code snippet to set the report parameter name and value.

    List<BoldReports.Web.ReportParameter> userParameters = new List<BoldReports.Web.ReportParameter>();
    userParameters.Add(new BoldReports.Web.ReportParameter()
    {
        Name = "SalesOrderNumber",
        Values = new List<string>() { "SO50756" }
    });
    
    writer.SetParameters(userParameters);
  4. Use the Save method of the Report Writer to generate the export document from the report stream. The Save method returns the generated file as a stream.

    [HttpPost]
    public ActionResult Export(string writerFormat)
    {
       // Here, we have loaded the sample reports from application the App_Data\Resources folder.
       FileStream reportStream = new FileStream(System.Web.Hosting.HostingEnvironment.MapPath(@"\App_Data\Resources\sales-order-detail.rdl"), FileMode.Open, FileAccess.Read);
       BoldReports.Writer.ReportWriter writer = new BoldReports.Writer.ReportWriter();
       writer.ReportProcessingMode = ProcessingMode.Remote;
       List<BoldReports.Web.ReportParameter> userParameters = new List<BoldReports.Web.ReportParameter>();
    
       userParameters.Add(new BoldReports.Web.ReportParameter()
       {
           Name = "SalesOrderNumber",
           Values = new List<string>() { "SO50756" }
       });
    
       writer.SetParameters(userParameters);
    
       string fileName = null;
       WriterFormat format;
       string type = null;
    
       if (writerFormat == "PDF")
       {
           fileName = "sales-order-detail.pdf";
           type = "pdf";
           format = WriterFormat.PDF;
       }
       else if (writerFormat == "Word")
       {
           fileName = "sales-order-detail.docx";
           type = "docx";
           format = WriterFormat.Word;
       }
       else if (writerFormat == "CSV")
       {
           fileName = "sales-order-detail.csv";
           type = "csv";
           format = WriterFormat.CSV;
       }
       else
       {
           fileName = "sales-order-detail.xlsx";
           type = "xlsx";
           format = WriterFormat.Excel;
       }
    
       writer.LoadReport(reportStream);
       MemoryStream memoryStream = new MemoryStream();
       writer.Save(memoryStream, format);
    
       // Download the generated export document to the client side.
       memoryStream.Position = 0;
       FileStreamResult fileStreamResult = new FileStreamResult(memoryStream, "application/" + type);
       fileStreamResult.FileDownloadName = fileName;
       return fileStreamResult;
    }
  5. The Report Writer now exports the parameter report in your application.