Click here to Skip to main content
15,867,756 members
Articles / Web Development / ASP.NET
Tip/Trick

How to Export Crystal Report on Button Click in to PDF, Excel, Word, HTML, Rtf in ASP.NET C#.

Rate me:
Please Sign up or sign in to vote.
4.66/5 (26 votes)
27 Jan 2014CPOL3 min read 424.8K   11.1K   25   49
This article discusses how to export Crystal Report on button click into PDF, Excel, Word, HTML, RTF in ASP.NET C#

Introduction

What Is Crystal Reports?

"In simplest terms, Crystal Reports is a report design tool that allows you to create reports capable of retrieving and formatting a result set from a database or other data source. In addition to simply reading data from a data source, Crystal Reports has its own formula language for creating calculations and includes a number of features that can be used to turn raw data into presentation-quality reports, with graphs, charts, running totals, and so on." (David McAmis, Professional Crystal Reports for Visual Studio .NET, 2nd edition)

We give this option to users to download there on copy of result what they want from search result.

Sqlserver Part

Create a Simple Table Name as PersonInfo:

SQL
create Table PersonInfo
(
PersonID int primary key IDENTITY(1,1) NOT NULL,
PersonName Nvarchar(100) NULL,
PersonAge int NULL,
PersonAddress Nvarchar(100) NULL,
PersonProfession nvarchar(100) NULL
)

Image 1

Inserting Records  

Insert Records into Table from backend

 Image 2 

Selecting Records for displaying on report Using StoredProcedure

SQL
CREATE Proc Usp_getPersonRecords
as
SELECT * FROM PersonInfo   

Create a new ASP.NET Web Application Project.

Image 3

Image 4

Add New Web form -> Name it as ExportRecords.aspx.

Image 5

Adding Crystal Report

Image 6

Image 7

When this Screen appears in front of you, just select (Standard) and Press Ok button.

Image 8

The Standard Report Creation Wizard will pop

Image 9

Select Create New Connection.  

  1. Inside That OLE DB
  2. A new Wizard will pop up OLE DB (ADO)

    Image 10

  3. It will ask for Provider
  4. Select (Microsoft OLE DB Provider for SQL Server)
  5. Click Next Button

    Image 11

Connection Information Wizard will appear.  

Just enter your SQL Server details here.

Image 12 

Then click on Next button

Image 13 

After click on Finish this wizard will appear.

Image 14 

  1. First select your Database where you have created table.
  2. Inside that you will find 3 options  
    1. dbo  
    2. INFORMATION_SCHEMA
    3. Sys  
  3. Select dbo (Here you will see 2 options)
    1. Tables
    2. Stored procedures
  4. Select Store procedures from it.

(Because we will bind Store procedures to report to display information)

 Image 15

The Store procedures Usp_getPersonRecords will appear in the list of data sources, add the Store procedures to selected table list by clicking on the right arrow.

Click Next button

This wizard will appear.

Image 16 

Select all columns and then clicking on the right arrow to move in Fields to Display

Image 17 

Click on Next Button

Image 18 

We will not perform Grouping Just click Next Button

This wizard will appear.

Image 19 

We will not perform Record Filter Just click Next Button

This wizard will appear.

Image 20 

Select Standard from it and click Finish.

After Finishing the crystal report will appear to you.

 Image 21

Just Save it.  

Let’s Move from sql to Web forms now. (ExportRecords.aspx)

On Page Add Crystal Report viewer and three images buttons

(I have add images to buttons)  

HTML
<form id="form1" runat="server">
<div style="margin: 0px; overflow: auto;">
<table width="100%">
<tr>
<td align="center">

<asp:ImageButton ID="Img1" Height="50px" ImageUrl="~/Images/PdfImage.jpg"
runat="server" onclick="Img1_Click" />

<asp:ImageButton ID="img2" Height="50px" ImageUrl="~/Images/index.jpg"
runat="server" onclick="img2_Click" />

<asp:ImageButton ID="img3" Height="50px" ImageUrl="~/Images/docx.png"
runat="server" onclick="img3_Click" />

<CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server" AutoDataBind="true" />

</td>
</tr>
</table>
</div>
</form>

Like this View you will see

Image 22 

On load for Binding crystal Report i have created Method GenerateReport().

You need to add Connection string above Page load.

SQL
SqlConnection con = new SqlConnection<br />(ConfigurationManager.ConnectionStrings["Myconstr"].ToString());

And add Connection string In Web.config.

For doing connection with database you need to add connection string to database Here is example of it.

Just replace here with your database value.

Data source

Database

User id

Password

<connectionStrings>
   <add name="Myconstr" connectionString="data source=SAI-PC; Database=MotorTraining;  user id=sa; password=Pass$123 ;" providerName="system.data.sqlclient"/>
</connectionStrings>

Here I have bind crystal report on page load event.

protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                GenerateReport();
            }
        }

This is method which I am using for binding crystal report on page load.

protected void GenerateReport()
        {
            SqlCommand cmd = new SqlCommand("Usp_getPersonRecords", con);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = cmd;
            DataTable datatable = new DataTable();
            da.Fill(datatable); // getting value according to imageID and fill dataset

            ReportDocument crystalReport = new ReportDocument(); // creating object of crystal report
            crystalReport.Load(Server.MapPath("~/CrystalPersonInfo.rpt")); // path of report 
            crystalReport.SetDataSource(datatable); // binding datatable
            CrystalReportViewer1.ReportSource = crystalReport;
        }

How It Works

On button click we are going to Export crystal report in pdf, Excel, html, format.

We are bringing all data from sql server into dataset and binding dataset to crystal report data source.

Creating object of report document

ReportDocument crystalReport = new ReportDocument();

After creating object we are going to load crystal report by giving its path.

crystalReport.Load(Server.MapPath("~/CrystalPersonInfo.rpt"));

Here we are assigning format to export.

crystalReport.ExportToHttpResponse(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, 
    Response, true, "PersonDetails");

First Button (Img1 for exporting records in PDF format)

On button click we are going to Export crystal report in PDF format.

C#
protected void Img1_Click(object sender, ImageClickEventArgs e)
        {
            SqlCommand cmd = new SqlCommand("Usp_getPersonRecords", con);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = cmd;
            DataTable datatable = new DataTable();
            da.Fill(datatable); // getting value according to imageID and fill dataset

            ReportDocument crystalReport = new ReportDocument(); // creating object of crystal report
            crystalReport.Load(Server.MapPath("~/CrystalPersonInfo.rpt")); // path of report 
            crystalReport.SetDataSource(datatable); // binding datatable
            CrystalReportViewer1.ReportSource = crystalReport;

            crystalReport.ExportToHttpResponse
            (CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, Response, true, "PersonDetails");
            //here i have use [ CrystalDecisions.Shared.ExportFormatType.PortableDocFormat ] to Export in PDF

        }

First Second (Img2 for exporting records in Excel format)

On button click we are going to Export crystal report in Excel format.

C#
protected void img2_Click(object sender, ImageClickEventArgs e)
        {
            SqlCommand cmd = new SqlCommand("Usp_getPersonRecords", con);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = cmd;
            DataTable datatable = new DataTable();
            da.Fill(datatable); // getting value according to imageID and fill dataset

            ReportDocument crystalReport = new ReportDocument(); // creating object of crystal report
            crystalReport.Load(Server.MapPath("~/CrystalPersonInfo.rpt")); // path of report 
            crystalReport.SetDataSource(datatable); // binding datatable
            CrystalReportViewer1.ReportSource = crystalReport;

            crystalReport.ExportToHttpResponse
            (CrystalDecisions.Shared.ExportFormatType.ExcelRecord, Response, true, "PersonDetails");
            //here i have use [ CrystalDecisions.Shared.ExportFormatType.ExcelRecord ] to Export in Excel
        }

First Third (Img3 for exporting records in Word format)

On button click we are going to Export crystal report in Word format

C#
protected void img3_Click(object sender, ImageClickEventArgs e)
        {
            SqlCommand cmd = new SqlCommand("Usp_getPersonRecords", con);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = cmd;
            DataTable datatable = new DataTable();
            da.Fill(datatable); // getting value according to imageID and fill dataset

            ReportDocument crystalReport = new ReportDocument(); // creating object of crystal report
            crystalReport.Load(Server.MapPath("~/CrystalPersonInfo.rpt")); // path of report 
            crystalReport.SetDataSource(datatable); // binding datatable
            CrystalReportViewer1.ReportSource = crystalReport;

            crystalReport.ExportToHttpResponse
            (CrystalDecisions.Shared.ExportFormatType.WordForWindows, Response, true, "PersonDetails");
            //here i have use [ CrystalDecisions.Shared.ExportFormatType.WordForWindows ] to Export in Word
        }

Now save and run project.  

All records will appear on Crystal report.

With five buttons to Export.

Image 23 

On clicking of PDF button.

Image 24 

On clicking Excel button.

Image 25

On clicking of Word button.

Image 26

 

On clicking of HTML button.

Image 27 

On clicking of RTF button

Image 28 

Making Easy to Understand

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Technical Lead
India India
Microsoft Most Valuable Professional
Code Project Most Valuable Author
C# Corner Most Valuable Professional

I am Senior Technical lead Working on.Net Web Technology
ASP.NET MVC,.Net Core,ASP.NET CORE, C#, SQL Server, MYSQL, MongoDB, Windows

Comments and Discussions

 
QuestionExport to HTML 3.5 or HTML 40 produces HTML that displays very poorly in gmail or outlook. Pin
PhilMcGahan28-Feb-24 9:37
PhilMcGahan28-Feb-24 9:37 
Questionllamar reporte en vb Pin
Member 142121483-Apr-19 19:44
Member 142121483-Apr-19 19:44 
Question#ASP.NET #Report #Popupwindow Pin
Member 1302591623-Aug-17 20:22
Member 1302591623-Aug-17 20:22 
QuestionWhile converting Chart (Pie, columns, etc) report to HTML not visible for Chrome, FireFox, Edge Pin
sachin4dotnet8-Aug-17 0:54
sachin4dotnet8-Aug-17 0:54 
Answernice easy article and its working perfectly ......thanks Pin
Member 1305587221-Mar-17 1:21
Member 1305587221-Mar-17 1:21 
QuestionAdding the code to existing report Pin
Thameera Nawaratna24-Mar-16 22:28
professionalThameera Nawaratna24-Mar-16 22:28 
AnswerRe: Adding the code to existing report Pin
Saineshwar Bageri25-Mar-16 20:15
Saineshwar Bageri25-Mar-16 20:15 
GeneralRe: Adding the code to existing report Pin
Thameera Nawaratna28-Mar-16 21:09
professionalThameera Nawaratna28-Mar-16 21:09 
QuestionError Pin
Praveen SKumar16-Mar-16 21:15
Praveen SKumar16-Mar-16 21:15 
AnswerRe: Error Pin
Saineshwar Bageri25-Mar-16 20:19
Saineshwar Bageri25-Mar-16 20:19 
GeneralRe: Error Pin
Praveen SKumar5-Apr-16 0:58
Praveen SKumar5-Apr-16 0:58 
QuestionExport CrystalDocument in c# Pin
Rushabhs99916-Mar-16 20:16
Rushabhs99916-Mar-16 20:16 
AnswerRe: Export CrystalDocument in c# Pin
Saineshwar Bageri16-Mar-16 20:33
Saineshwar Bageri16-Mar-16 20:33 
AnswerRe: Export CrystalDocument in c# Pin
Saineshwar Bageri25-Mar-16 20:20
Saineshwar Bageri25-Mar-16 20:20 
QuestionDo this code still works with CR 13 or it throws exception like mine. Pin
Harcheem25-Jun-15 16:48
Harcheem25-Jun-15 16:48 
AnswerRe: Do this code still works with CR 13 or it throws exception like mine. Pin
Harcheem25-Jun-15 17:02
Harcheem25-Jun-15 17:02 
GeneralRe: Do this code still works with CR 13 or it throws exception like mine. Pin
Saineshwar Bageri25-Jun-15 17:36
Saineshwar Bageri25-Jun-15 17:36 
GeneralRe: Do this code still works with CR 13 or it throws exception like mine. Pin
Harcheem27-Jun-15 13:45
Harcheem27-Jun-15 13:45 
QuestionGenerating crystal reports in mvc 4 Pin
Member 1134525229-Apr-15 3:01
Member 1134525229-Apr-15 3:01 
QuestionThanks Pin
Mei Yi16-Feb-15 16:45
Mei Yi16-Feb-15 16:45 
QuestionHow to convert crystal report file into .pdf file Pin
Shemeemsha (ഷെമീംഷ)15-Jan-15 1:54
Shemeemsha (ഷെമീംഷ)15-Jan-15 1:54 
QuestionExporting to html Page headers are missing Pin
Member 106783484-Aug-14 20:04
Member 106783484-Aug-14 20:04 
QuestionExport Three crystal report in one PDF file at a time Pin
Ajay Shedge13-Jul-14 23:52
professionalAjay Shedge13-Jul-14 23:52 
AnswerRe: Export Three crystal report in one PDF file at a time Pin
Saineshwar Bageri16-Jul-14 18:51
Saineshwar Bageri16-Jul-14 18:51 
GeneralRe: Export Three crystal report in one PDF file at a time Pin
Ajay Shedge16-Jul-14 19:24
professionalAjay Shedge16-Jul-14 19:24 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.