c#实现传入文件后缀名为 “.frx“ 的报表文件,以及SQL语句进行打印功能

发布时间:2024-01-15 11:37:04

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,然后使用以上的报表修改进行自定义设计

文章来源:https://blog.csdn.net/qq_64948696/article/details/135595442
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。