利用Crystal Report 匯出檔案
個人使用C#搭配Crystal Report產製Excel或PDF檔,也有六年了吧,近來換公司,由.Net 2003換成
.Net 2005,覺得很多人總對Crystal Report有誤解,認為它不好用,其實,用Crystal Report來產製PDF/Excel檔真的很好用
我一般是把處理的寫成一個class,去新公司時,把.Net 2005的也寫成一個class,把個人的一些作
法跟大家分享
實際要匯出時只要幾行,其實一些目錄處理我也都寫成class做,但就不講太多,主要是把Crystal Report的做法跟大家分享
ReportDocument myDoc = new ReportDocument(); //請引用CrystalDecisions.CrystalReports.Engine
myDoc.Load(Rpt的位置); //看Rpt放在那裡,須讓它Load
myReport.ChangeReportDataBase(myDoc);
myReport.SetDocParameter(myDoc, rpt檔中設定的參數名稱,要給參數的值);
切記..若rpt中沒有傳入參數,千萬別下myDoc.Refresh(),沒傳參數時才可以
---下方是建議包成class----
public void ChangeReportDataBase(ReportDocument myReport)
{
CrystalDecisions.Shared.TableLogOnInfo myLoginInfo = new CrystalDecisions.Shared.TableLogOnInfo();
foreach (CrystalDecisions.CrystalReports.Engine.Table myTable in myReport.Database.Tables)
{
myLoginInfo.ConnectionInfo.ServerName = 建議設在Web.config;
myLoginInfo.ConnectionInfo.UserID = 建議設在Web.config;
myLoginInfo.ConnectionInfo.Password = 建議設在Web.config;
myTable.ApplyLogOnInfo(myLoginInfo);
}
}
///rpt檔中若有參數時可用
public void SetDocParameter(ReportDocument prvDoc, string prvCRParName, string prvCRValue)
{
ParameterDiscreteValue DisParameter = new ParameterDiscreteValue();
ParameterValues prvParameter = new ParameterValues();
DisParameter.Value = prvCRValue;
prvParameter.Add(DisParameter);
prvDoc.DataDefinition.ParameterFields[prvCRParName].ApplyCurrentValues(prvParameter);
}
///匯出pdf檔的做法,excel比照辦理
public string ExportPdf(ReportDocument prvReport, string prvPath, string prvFileName, string GetTimeToFileName)
{
string GetFileName;
DiskFileDestinationOptions dk = new DiskFileDestinationOptions();
GetFileName = prvFileName + GetTimeToFileName + ".pdf";
dk.DiskFileName = prvPath + GetFileName;
prvReport.ExportOptions.DestinationOptions = dk;
prvReport.ExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
prvReport.ExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
try
{
prvReport.Export();
ExecFinal();
}
catch
{
ExecError(prvPath);
}
return GetFileName;
}
打雜打久了,就變成打雜妹
程式寫久了,就變成老乞丐