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

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
    评论
字段名称 类型 长度 小数 说明   1 PLATFORM C 8 操作平台(_DOS或_WINDOWS)   2 UNIQUEID C 10 唯一标识(当NAME合EXPR都为空时以_RHE开头, 否则以_RNR开头)   3 TIMESTAMP N 10 时间标签(先后次序)   4 OBJTYPE N 2 目标类型(1.环境; 2.数据库; 5.文字; 8.变量;9.TIMESTAMP为空; 23.TIMESTAMP为空) 5 OBJCODE N 3 目标代码(1.;4.;7.;53)   6 NAME M 10 名称(数据库名称)   7 EXPR M 10 表达式   8 VPOS N 9 3 行座标   9 HPOS N 9 3 列座标   10 HEIGHT N 9 3 高度   11 WIDTH N 9 3 宽度   12 STYLE M 10 风格(透明,不透明)   13 PICTURE M 10 格式或OLE文件名称   14 ORDER M 10 索引排序   15 UNIQUE L 1 唯一数据库(.F.,.T.,空)   16 COMMENT M 10 注释   17 ENVIRON L 1 是否报表运行环境(.T.时)   18 BOXCHAR C 1 画框字符   19 FILLCHAR C 1 表达式类型(C,N,D等,文字型的为空)   20 TAG M 10 (当该记录为记录环境的记录时,该字段储存打印信息等;记录数据库时,储存数据库名称)   21 TAG2 M 10 当该记录为记录环境的记录时,该字段储存打印控制等   22 PENRED N 5 前景红   23 PENGREEN N 5 前景绿   24 PENBLUE N 5 前景蓝   25 FILLRED N 5 填充红   26 FILLGREEN N 5 填充绿   27 FILLBLUE N 5 填充蓝   28 PENSIZE N 5 划线宽度   29 PENPAT N 5 指定填充图案(0.空;1.实体;2.水平;3.垂线;4.左  斜;5右斜;6.交叉;7.斜交叉)   30 FILLPAT N 5 划线类型(0.无;1.点;2.虚线;3. 虚线-点;4. 虚线-点-点)   31 FONTFACE M 10 字体类型   32 FONTSTYLE N 3 字体风格   33 FONTSIZE N 3 字体大小   34 MODE N 3 模式   35 RULER N 1 标尺(2-默认值,3-象素)   36 RULERLINES N 1 标线宽度   37 GRID L 1 是否显示网格线   38 GRIDV N 2 垂直网格线刻度   39 GRIDH N 2 水平网格线刻度   40 FLOAT L 1 浮动   41 STRETCH L 1 溢出时伸展   42 STRETCHTOP L 1 相对于顶端伸展   43 TOP L 1 相对于顶端固定   44 BOTTOM L 1 相对于底端固定   45 SUPTYPE N 1 控制类型   46 SUPREST N 1 控制设置   47 NOREPEAT L 1 每页都打印页标题   48 RESETRPT N 2 重置报表   49 PAGEBREAK L 1 每组从新的一页开始   50 COLBREAK L 1 从新的一列开始   51 RESETPAGE L 1 每组页号重新从1开始   52 GENERAL N 3 通用   53 SPACING N 3 空格   54 DOUBLE L 1 是否加倍   55 SWAPHEADER L 1 头互换   56 SWAPFOOTER L 1 脚注互换   57 EJECTBEFOR L 1 打印前走纸   58 EJECTAFTER L 1 打印后走纸   59 PLAIN L 1 指定只在报表开始位置出现页标题   60 SUMMARY L 1 是否仅打印总计和分类总计信息   61 ADDALIAS L 1 是否增加别名   62 OFFSET N 3 偏移(0-左;1-右;2-居中)   63 TOPMARGIN N 3 上边界高度   64 BOTMARGIN N 3 下边界高度   65 TOTALTYPE N 2 计算类型   66 RESETTOTAL N 2 重置(1-表尾,2-页尾)   67 RESOID N 3 源标识   68 CURPOS L 1 是否显示当前位置   69 SUPALWAYS L 1 是否打印重复值   70 SUPOVFLOW L 1 当细节区数据溢出时到新页或新列打印   71 SUPRPCOL N 1 当此列改变时打印   72 SUPGROUP N 2 当此组改变时打印   73 SUPVALCHNG L 1 若空行则删除   74 SUPEXPR M 10 是否打印控制条件   ==============================   Objtype Objcode Offset 含义   5 0 文字   8 0 表达式   6 0 1 直线(水平线)   6 0 0 直线(垂直线)   7 4 矩形框(0~99椭圆)   用于报表布局的控制的特征值列入下表:   Objtype Objcode 含义   9 0 页头高度   9 1 页细节高度   9 3 组标头高度   9 4 组细节高度   9 5 组脚注高度   9 7 页脚注高度   其他常用到的字段有: ①水平坐标(Hpos); ②宽度(Width); ③表达式类型(Fillchar);   ④字体(Fontface); ⑤对齐方式(Offset)。
以下是一个更详细的示例,展示如何在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、付费专栏及课程。

余额充值