HTML clipboardReferrences:
Add the below references from .Net tab (Projects -> Add Reference..)
CrystalDecisions.CrystalReports.Engine
CrystalDecisions.Shared
Namespaces:
using
CrystalDecisions.CrystalReports.Engine;
using
CrystalDecisions.Shared;
using
System.Data.SqlClient;
Global Variable declaration:
ReportDocument
rpt = new
ReportDocument();
Display the report through CrystalViewer in Form_Load() event:
private
void Form1_Load(object
sender, EventArgs e)
{
rpt.Load(@"D:\Muthu\Tech\Blogs\CrystalReportsApp\CrystalReportsApp\ChartReport.rpt");
crystalReportViewer1.ReportSource = rpt;
crystalReportViewer1.Refresh();
}
Bind the Crystal report dynamically and Update the crystal report label value
dynamically:
private
void btnRefresh_Click(object
sender, EventArgs e)
{
//Begin: Bind the reports dynamically
DataTable dtReports = BindReports();
rpt.SetDataSource(dtReports);
//End: Bind the reports dynamically
//Begin: Update the report label value
from All to the entered employee name in the text box
TextObject myTextObjectOnReport;
if (rpt.ReportDefinition.ReportObjects["txtEmpName"]
!= null)
{
myTextObjectOnReport = (TextObject)rpt.ReportDefinition.ReportObjects["txtEmpName"];
myTextObjectOnReport.Text = txtName.Text;
}
crystalReportViewer1.ReportSource = rpt;
crystalReportViewer1.Refresh();
//End
}
//Filtered the report details based on the employee name entered in the textbox
private DataTable BindReports()
{
string conString =
@"Data Source=WVDI1IHCL32\WVDI1IHCL32;Initial
Catalog=Test;Integrated Security=True;";
SqlConnection con = new
SqlConnection(conString);
con.Open();
string query =
"SELECT EmployeeID, DepID, Name, Mark FROM Employee
E WHERE E.Name='" + txtName.Text + "'";
SqlDataAdapter sqlAdapter = new
SqlDataAdapter(query, con);
DataTable dtReport = new DataTable();
sqlAdapter.Fill(dtReport);
con.Close();
return dtReport;
}
Generate the Crystal report as a PDF, Word or Excel:
When we use the CrystalReportViewer to display reports, we have a provision to
export the report as PDF or any other format using the below icon.
If we want to generate the report without the viewer control, that time we can
use the below code. (Automation of report generation using windows service or
console app)
private
void btnExport_Click(object
sender, EventArgs e)
{
ExportOptions rptExportOption;
DiskFileDestinationOptions
rptFileDestOption = new
DiskFileDestinationOptions();
PdfRtfWordFormatOptions
rptFormatOption = new
PdfRtfWordFormatOptions();
//If we want to generate the report as pdf,
change the file extention type as "D:\Muthu\SampleReport.pdf"
//If we want to generate the report as
excel, change the file extention type as "D:\Muthu\SampleReport.xls"
string reportFileName =
@"D:\Muthu\SampleReport.doc";
rptFileDestOption.DiskFileName = reportFileName;
rptExportOption = rpt.ExportOptions;
{
rptExportOption.ExportDestinationType =
ExportDestinationType.DiskFile;
//if we want to generate the report as
PDF, change the ExportFormatType as "ExportFormatType.PortableDocFormat"
//if we want to generate the
report as Excel, change the ExportFormatType as "ExportFormatType.Excel"
rptExportOption.ExportFormatType =
ExportFormatType.RichText;
rptExportOption.ExportDestinationOptions = rptFileDestOption;
rptExportOption.ExportFormatOptions = rptFormatOption;
}
rpt.Export();
}
Report Design:
Output: (First time, report will looks like the below)
Enter employee name in the textbox and click "Refresh" button.
To generate the report as doc, click on "Export" button.