Crystal Reports 內建於 Visual Studio .NET,提供強大的報表設計與瀏覽功能。本文示範建立 Windows Forms 應用程式,載入 .rpt 檔案並顯示於 CrystalReportViewer 控制項中。
Form1.Text = "水晶報表瀏覽器",StartPosition = CenterScreen。CrystalReportViewer、Button、OpenFileDialog。CrystalReportViewer:
crystalReportViewer1.Dock = DockStyle.Fill;
crystalReportViewer1.DockPadding.Bottom = 50; // 留空間給按鈕
crystalReportViewer1.DockPadding.Left = 5;
crystalReportViewer1.DockPadding.Right = 5;
crystalReportViewer1.DockPadding.Top = 5;
crystalReportViewer1.ReportSource = null;
Button:
button1.Anchor = AnchorStyles.Bottom;
button1.Text = "開啟報表";
button1.Click += button1_Click;
OpenFileDialog:
openFileDialog1.Filter = "Crystal Report (*.rpt)|*.rpt|所有檔案(*.*)|*.*";
openFileDialog1.Title = "開啟水晶報表";
private void button1_Click(object sender, EventArgs e)
{
try
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
crystalReportViewer1.ReportSource = openFileDialog1.FileName;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), "錯誤");
}
}
VS.NET 安裝目錄下提供範例報表:
...\Program Files\Microsoft Visual Studio .NET\Crystal Reports\Samples\Reports\Feature Examples\Chart.rpt
using System;
using System.Drawing;
using System.Windows.Forms;
using CrystalDecisions.Windows.Forms;
namespace WindowsApplication10
{
public class Form1 : Form
{
private CrystalReportViewer crystalReportViewer1;
private Button button1;
private OpenFileDialog openFileDialog1;
private Container components = null;
public Form1() { InitializeComponent(); }
private void InitializeComponent()
{
this.crystalReportViewer1 = new CrystalReportViewer();
this.button1 = new Button();
this.openFileDialog1 = new OpenFileDialog();
this.SuspendLayout();
// ... 設定屬性如上 ...
this.ResumeLayout(false);
}
[STAThread]
static void Main() => Application.Run(new Form1());
private void button1_Click(object sender, EventArgs e)
{
try
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
crystalReportViewer1.ReportSource = openFileDialog1.FileName;
}
catch (Exception ex) { MessageBox.Show(ex.ToString(), "錯誤"); }
}
}
}
ReportSource = reportDocument:指派 ReportDocument 物件 (可先 Load 檔案)ReportSource = "https://server/report.rpt":直接載入網路路徑reportDoc.SetDataSource(dataSet) 再指派給 Viewer。透過 CrystalReportViewer、OpenFileDialog 與簡單的事件處理,即可快速建立功能完整的報表瀏覽器,支援列印、匯出、鑽取等 Crystal Reports 核心功能。