[C#]使用Crystal Report將報表另存成檔案

  • 19979
  • 0
  • C#
  • 2009-09-07

[Other]使用Crystal Report將報表另存成檔案

前兩篇提到Reporting Service的功能,這篇來說一下Crystal Report如何做到同樣的功能吧,如果你看得懂這一篇:

[SQL Server]透過ReportViewer將報表另存成檔案

那Crystal Report這邊的做法對你來說一定沒問題,因為兩者的做法幾乎一模一樣,簡單到我們直接看Code就會了:

 


/// <summary>
/// 傳入報表路徑、資料與要轉的檔案類型,回傳CR的報表陣列
/// </summary>
/// <param name="pReportPath">報表路徑(在網站中可用相對路徑,在類別中需要指定實體路徑)</param>
/// <param name="pReportData">資料內容</param>
/// <param name="pExpertFormatType">要轉出的檔案類型</param>
/// <returns>回傳結果的陣列</returns>
public byte[] ExportCrystalReportAsByte(string pReportPath, DataTable pReportData, ExportFormatType pExpertFormatType)
{
    ReportDocument tCRReportDocument = new ReportDocument();

    //載入該報表
    tCRReportDocument.Load(pReportPath);
    //設定資料
    tCRReportDocument.SetDataSource(pReportData);
    //將資料內容轉成串流
    Stream tStream = tCRReportDocument.ExportToStream(pExpertFormatType);
    byte[] tResult = new byte[tStream.Length];
    //將串流資料轉成byte[]
    tStream.Read(tResult, 0, Convert.ToInt32(tStream.Length));
    tStream.Close();

    return tResult;
}

另外Crystal Report還支援直接將報表轉成實體檔的功能,不用自己將byte[]內容轉成檔案囉,可以參考以下寫法:


/// <summary>
/// 透過crystal report產出報表結果檔
/// </summary>
/// <param name="pReportPath">報表rpt檔的實體路徑</param>
/// <param name="pExportFileName">要輸出的檔案路徑</param>
/// <param name="pReportData">要餵進去的資料</param>
/// <param name="pExpertFormatType">輸出的檔案類型(PortableDocFormat=PDF,不支援XML與IMAGE)</param>
public void ExportCrystalReportAsFile(string pReportPath, string pExportFileName, DataTable pReportData, ExportFormatType pExpertFormatType)
{
    ReportDocument tCRReportDocument = new ReportDocument();

    //載入該報表
    tCRReportDocument.Load(pReportPath);
    //設定資料
    tCRReportDocument.SetDataSource(pReportData);

    switch (pExpertFormatType.ToString())
    {
        case "EXCEL":
            tCRReportDocument.ExportToDisk(ExportFormatType.Excel, pExportFileName);
            break;
        case "HTML3.2":
            tCRReportDocument.ExportToDisk(ExportFormatType.HTML32, pExportFileName);
            break;
        case "HTML4.0":
            tCRReportDocument.ExportToDisk(ExportFormatType.HTML40, pExportFileName);
            break;
        case "CSV":
            tCRReportDocument.ExportToDisk(ExportFormatType.ExcelRecord, pExportFileName);
            break;
        case "PDF":
            tCRReportDocument.ExportToDisk(ExportFormatType.PortableDocFormat, pExportFileName);
            break;
        default:
            tCRReportDocument.ExportToDisk(ExportFormatType.Excel, pExportFileName);
            break;

    }
}

Crystal Report最少就支援五種匯出格式,應該很夠用了,這一類的內容很簡單,因此只是share程式內容出來,就不多做說明了。

游舒帆 (gipi)

探索原力Co-founder,曾任TutorABC協理與鼎新電腦總監,並曾獲選兩屆微軟最有價值專家 ( MVP ),離開職場後創辦探索原力,致力於協助青少年培養面對未來的能力。認為教育與組織育才其實息息相關,都是在為未來儲備能量,2018年起成立為期一年的專題課程《職涯躍升的關鍵24堂課》,為培養台灣未來的領袖而努力。