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

本文介绍了Fast_Report类,包括其Print方法支持的不同打印模式、数据库连接与SQL查询,以及如何进行报表设计和预览。
摘要由CSDN通过智能技术生成

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

  • 16
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个更详细的示例,展示如何在C#中使用FastReport启动打印指令: ```csharp using FastReport; using FastReport.Export.Image; public class FastReportPrinter { public void PrintReport(string reportFilePath, string printerName) { Report report = new Report(); // 加载报表文件 report.Load(reportFilePath); // 设置打印机名称 report.PrintSettings.Printer = printerName; // 执行打印操作 report.Print(); } public void ExportReportToImage(string reportFilePath, string outputImagePath) { Report report = new Report(); // 加载报表文件 report.Load(reportFilePath); // 创建图像导出器 ImageExport imageExport = new ImageExport(); imageExport.ImageFormat = ImageExportFormat.Jpeg; imageExport.SeparateFiles = false; // 导出报表为图像 imageExport.Export(report, outputImagePath); } } ``` 您可以在您的代码中使用`FastReportPrinter`类来执行打印和导出操作。例如: ```csharp FastReportPrinter printer = new FastReportPrinter(); // 打印报表 printer.PrintReport("YourReportFile.frx", "YourPrinterName"); // 导出报表为图像 printer.ExportReportToImage("YourReportFile.frx", "OutputImage.jpg"); ``` 请确保将`YourReportFile.frx`替换为您实际的报表文件路径和文件名,并将`YourPrinterName`替换为您想要使用的打印机名称。同样地,将`OutputImage.jpg`替换为您想要保存导出图像的文件路径和文件名。 这个示例展示了如何使用FastReport在C#中执行打印和导出操作。您可以根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lucky.帅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值