1、新建一个Fast_Report类(注意Print方法下方的注释)
/// <summary> /// 打印模式 /// </summary> public enum Print_Set { /// <summary> /// 隐藏打印框打印 /// </summary> HidePrint = 0, /// <summary> /// 显示打印框打印 /// </summary> ShowPrint = 1, /// <summary> /// 设计报表 /// </summary> Design = 2, /// <summary> /// 预览报表 /// </summary> Show = 3 } class Fast_Report { /// <summary> /// 报表 /// </summary> private Report report = null; /// <summary> /// 日志 /// </summary> private StringBuilder log = new StringBuilder(); /// <summary> /// 传入文件路径(\结尾),文件名(.frx结尾) /// </summary> /// <param name="path">路径</param> /// <param name="frx">文件名</param> public Fast_Report(string path, string frx, bool create = false) { report = new Report(); //目录 if (!Directory.Exists(path) && create) { //路径不存在并且允许创建 Directory.CreateDirectory(path); } else if (!Directory.Exists(path) && !create) { //路径不存在并且不允许创建 log.AppendLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":目录不存在;"); } //文件 if (!File.Exists(path + frx) && create) { //文件不存在并且允许创建 report.FileName = path + frx; } else if (!File.Exists(path + frx) && !create) { //文件不存在并且不允许创建 log.AppendLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":文件不存在;"); } else { report.Load(path + frx); } } //注意这是我的数据库类 MYSQL my=new MYSQL(); public int Print(string sql, Print_Set print, string para) { report.SetParameterValue("prams1", para);//传参 try {//我这里调用的是我的查询方法,这里可以写成你自己的,也可以参考我以前写的数据库的增删改查方法 report.RegisterData(my.Get(sql)); switch (print) { case Print_Set.HidePrint: //隐藏打印对话框 report.PrintSettings.ShowDialog = false; report.Print(); break; case Print_Set.ShowPrint: report.PrintSettings.ShowDialog = true; report.Print(); break; case Print_Set.Design: report.Design(); break; case Print_Set.Show: report.Show(); break; default: log.AppendLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + $":Print值\"{(int)print}\"异常;"); return -1; } return (int)print; } catch (Exception ex) { log.AppendLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":" + ex.Message + ";"); return -1; } }
2、初始化并调用打印类,我目前用的隐式打印方式
string X = @"print/";//根目录下的文件名 string Y = "wight.frx";//报表的名称 string SQL = "select * from Product";//SQL语句 new Fast_Report(X, Y, true).Print(SQL, Print_Set.HidePrint, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
4、自定义设计报表内容
new Fast_Report(X, Y, true).Print(SQL, Print_Set.Design, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
这样可以调出一个FastReport工具对报表进行修改
5、报表工具展示
6、我上传了一个我自己弄的一个简单的报表可供使用,也可以自己新建一个文本文档把后缀名改成.frx,然后使用以上的报表修改进行自定义设计