C#調用FastReport報表打印時的傳參形式
方式一
調用SetParameterValue方法
FastReport.Report report = new FastReport.Report();
report.SetParameterValue(參數名稱, 參數值);
需要在報表模板文件xx.frx中的<Dictionary>標簽中添加對應的參數
在報表設計器中調用參數的方法如下
方式二
調用RegisterData注冊數據
report.RegisterData(數據集, 數據集名稱);
需要在報表模板文件xx.frx的<Dictionary>標簽中添加表格數據源、定義數據列及類型
在報表設計器中調用數據集的方法如下
調用實例
1.直接傳參數
FastReport.Report report = new FastReport.Report();
report.Load("ReportFile\\1.直接傳參數.frx");//加載模板
report.PrintSettings.Printer = Printer;//設置打印機
string Username = "直接傳遞參數";
report.SetParameterValue("prams1", Username);//傳參
report.Show();//預覽
效果:
2.DataSet傳參
FastReport.Report report = new FastReport.Report();
report.Load("ReportFile\\2.DateSet傳參.frx");
report.PrintSettings.Printer = Printer;
//組織數據
DataSet dt = new DataSet();
DataTable tb = new DataTable();
tb.TableName = "成績表";
tb.Columns.Add(new DataColumn("語文", Type.GetType("System.Int32")));
tb.Columns.Add(new DataColumn("數學", Type.GetType("System.Int32")));
tb.Columns.Add(new DataColumn("英語", Type.GetType("System.Int32")));
for (int i = 0; i < 10; i++)
{
DataRow dr = tb.NewRow();
dr["語文"] = 36;
dr["數學"] = 89;
dr["英語"] = 82;
tb.Rows.Add(dr);
}
dt.Tables.Add(tb);
//數據注冊
report.RegisterData(dt, "Data");
report.Show();
效果:
3.圖片傳輸
FastReport.Report report = new FastReport.Report();
report.PrintSettings.Printer = Printer;
report.Load("ReportFile\\3.圖片傳輸.frx");
//直接傳圖
Image image = Image.FromFile("test.jpg");
FastReport.PictureObject imgobj = report.FindObject("Picture1") as FastReport.PictureObject;
imgobj.Width = 120;
imgobj.Height = 120;
imgobj.Image = image;
//DateSet傳圖
byte[] img = ImageToByte(image);
DataSet dt = new DataSet();
DataTable tb = new DataTable();
tb.TableName = "圖片表";
tb.Columns.Add(new DataColumn("圖片1", Type.GetType("System.Byte[]")));
DataRow dr = tb.NewRow();
dr["圖片1"] = img;
tb.Rows.Add(dr);
dt.Tables.Add(tb);
report.RegisterData(dt, "Data");
report.Show();
效果: