c# 水晶報表使用說明


水晶報表介紹

水晶報表是 vs 早期版本自帶的一款報表控件。vs2017不自帶水晶報表,需要自行安裝。雖然水晶報表是收費控件,但是微軟已經付過錢了,所以vs自帶的水晶報表可以直接使用。

如果項目是 .net 4.0 以上版本,需要修改 App.config 文件。因為水晶報表的 .net 版本可能低於 .net 4.0

在軟件發布的時候需要把對應的config文件一起發布,否則也無法使用水晶報表

<startup useLegacyV2RuntimeActivationPolicy="true"> //在這一行加入 useLegacyV2RuntimeActivationPolicy="true"
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 

</startup>

 

在解決方案資源管理器中添加數據集DataSet1.xsd,在數據集中添加 DataTable.

新建 Crystal Reports 文件

在解決方案資源管理器中新建 Crystal Reports 文件: CrystalReport1.rpt 。添加后左側會出現 “字段資源管理器” 。如果不小心關掉字段資源管理器,可以在 “視圖”  “其它窗口”  “文檔大綱” 將其調出。

 

vs的工具箱中也會出現相應的控件。可以將文本對象添加到報表中。 文本對象常用屬性:CanGrow (可以自動換行)  HorAlignment (居中,靠左,靠右)。

 

在數據庫字段右鍵選擇數據庫專家。添加項目數據中的 DataTable1 

在 “組名字段” 右鍵插入組。選擇 DataTable1 中的字段 ,排序方式選擇按原始順序(水晶報表的排序方式不實用,一般在設置 DataTable 時自行排序)。

數據庫字段中的 Name Sex 可以拖到報表的詳細資料中。報表的頁眉會自動添加文本框。文本框的內容可修改為姓名,性別。

 

 

在界面中添加顯示控件:CrystalReportViewer   重命名為crv

 在窗口中創建報表對象並添加數據,顯示到 CrystalReportViewer 上面。可以直接打印,也可以通過控件上的打印按鈕打印。

using CrystalDecisions.CrystalReports.Engine;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace CrTest
{
    public partial class Form1 : Form
    {
        public Form1(bool directPrint = false)
        {
            InitializeComponent();
            DataSet1 ds = new DataSet1();
            ds.DataTable1.Rows.Add("組1", "張1", "");
            ds.DataTable1.Rows.Add("組3", "王1", "");
            ds.DataTable1.Rows.Add("組2", "李1", "");
            ds.DataTable1.Rows.Add("組1", "張2", "");
            ds.DataTable1.Rows.Add("組1", "張3", "");
            ds.DataTable1.Rows.Add("組1", "張4", "");
            ds.DataTable1.Rows.Add("組2", "李2", "");
            ds.DataTable1.Rows.Add("組2", "李3", "");
            ds.DataTable1.Rows.Add("組2", "李4", "");
            ds.DataTable1.Rows.Add("組3", "王2", "");

            ReportClass cr = new CrystalReport1();
            cr.SetDataSource(ds);
            TextObject title = (TextObject)cr.ReportDefinition.ReportObjects["Text1"];
            title.Text = "人員表格";
            if (directPrint)
            {
                PrintDialog print = new PrintDialog();
                if (print.ShowDialog() == DialogResult.OK)
                {
                    cr.PrintOptions.PrinterName = print.PrinterSettings.PrinterName;
                    cr.PrintToPrinter(1, false, 0, 0);
                }
            }
            this.crv.ReportSource = cr;
        }
    }
}

 

結尾

除了上述的基本功能外,水晶報表還有很多其他的用法。如:節專家,交叉表(在報表上右鍵選擇 插入 交叉表)。筆者精力有限,未能繼續研究。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM