在 Windows Forms 應用程式中,常見需求是將 DataGridView 顯示的查詢資料直接匯出至 Crystal Reports 進行列印或預覽。許多開發者卡在如何將記憶體中的資料集正確綁定至報表模板。本文提供完整步驟與程式碼範例,助您快速實作。
DataGridView(顯示資料)與列印按鈕。CrystalReportViewer 元件,用於報表預覽與列印。Click 事件中,將 DataGridView 的資料來源(通常是 DataTable 或 DataSet)取出。cryrp1,呼叫 SetDataSource(dataTable) 將資料灌入報表。CrystalReportViewer.ReportSource 指向已填入資料的 cryrp1。Form2.ShowDialog() 顯示預覽視窗。// Form1 - 列印按鈕事件
private void btnPrint_Click(object sender, EventArgs e)
{
// 假設 DataGridView 資料來源為 DataTable
DataTable dt = (DataTable)dataGridView1.DataSource;
if (dt == null) return;
// 建立報表實例並設定資料來源
cryrp1 report = new cryrp1();
report.SetDataSource(dt);
// 開啟預覽視窗
Form2 frmPreview = new Form2();
frmPreview.crystalReportViewer1.ReportSource = report;
frmPreview.ShowDialog();
}
SetDataSource 傳入的 DataTable 欄位名稱與報表欄位完全一致(區分大小寫)。report.SetDatabaseLogon(user, pwd, server, db) 覆寫連線。掌握 SetDataSource 與 ReportSource 兩個屬性的運用,即可輕鬆實現 DataGridView 資料到 Crystal Reports 的無縫列印。建議先在報表設計階段完成版面配置,再於程式碼端專注於資料綁定邏輯,達到關注點分離。