zoukankan      html  css  js  c++  java
  • Winforn中使用FastReport实现点击导出按钮PDF预览并弹出另存为对话框

    场景

    FastReport安装包下载、安装、去除使用限制以及工具箱中添加控件:

    https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100893794

    Winform中使用FastReport实现简单的自定义PDF导出:

    https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100920681

    参照上面实现使用FastReport导出PDF的实现后。

    如果要在点击导出按钮后同时进行PDF预览并弹出另存为对话框。

    效果如下:

    注:

    博客主页:
    https://blog.csdn.net/badao_liumang_qizhi
    关注公众号
    霸道的程序猿
    获取编程相关电子书、教程推送与免费下载。

    实现

    新建窗体并拖拽一个button和FastReport的PreviewControl

    在button的点击事件中

    首先加载frm模板文件

    Report report = new Report();
    //获取项目目录
    string baseDir = System.Windows.Forms.Application.StartupPath;
    //拼接模板文件目录
    var reportFile = Path.Combine(baseDir + @"dataReport", "ExportPDF.frx");
    //先清理一下
    report.Clear();
    //然后加载模板文件
    report.Load(reportFile);

    对模板中的TextObject进行赋值

    foreach (Control ctl in this.panelControl1.Controls)
                {
                    string[] strs = ctl.Name.Split('_');
                    if (strs.Length > 1)
                    {
                        string changeText = null;
                        if (strs[1].Equals("Date"))
                        {
                            //日期处理
                            DateEdit dateEdit = ctl as DateEdit;
                            DateTime date = (DateTime)dateEdit.EditValue;
                            changeText = date.ToLongDateString().ToString();
                        }else if (strs[1].Equals("Time"))
                        {
                            //时间处理
                            TimeEdit dateEdit = ctl as TimeEdit;
                            DateTime time = (DateTime)dateEdit.EditValue;
                            changeText = time.ToLongTimeString().ToString();
                        }
                        else
                        {
                            changeText = ctl.Text;
                        }
                        //找到 Name属性为T的控件
                        var t = report.FindObject("Text_" + strs[1]) as TextObject;
                        if (t != null)
                        {
                            //修改控件值
                            t.Text = changeText;
                        }
                    }
                }

    对模板中的图片控件PictureObject进行设置照片源

    var graph = report.FindObject("Picture2") as PictureObject;
    //获取图像
    System.Drawing.Image image = MainViewContent.mainViewContent.zedGraphControl1.GetImage();
    //照片旋转90度
    image.RotateFlip(RotateFlipType.Rotate90FlipNone);
    graph.Image = image;
    
    绑定并显示预览窗口
    
    //绑定预览控件 不然会弹出新的窗口
    report.Preview = this.previewControl1; 
    //显示预览窗口
    report.Prepare();
    report.ShowPrepared();

    显示另存为窗口

    //显示另存为窗口
    SaveFileDialog saveDialog = new SaveFileDialog();
    //设置默认文件扩展名。
    saveDialog.DefaultExt = "pdf";
    //设置当前文件名筛选器字符串,该字符串决定对话框的“另存为文件类型”或“文件类型”框中出现的选择内容。
    saveDialog.Filter = "pdf文件|*.pdf";
    //设置文件名
    saveDialog.FileName = fileName;
    //用默认的所有者运行通用对话框。
    saveDialog.ShowDialog();
    //如果修改了文件名,用对话框中的文件名名重新赋值
    fileName = saveDialog.FileName;
    //被点了取消
    if (fileName.IndexOf(":") < 0) return;
    FastReport.Export.Pdf.PDFExport export = new FastReport.Export.Pdf.PDFExport();
    report.Export(export, fileName);
    //即保存后打开Excel
    System.Diagnostics.Process.Start(fileName);
  • 相关阅读:
    搭建zabbix监控
    liunx 下ctrl+D问题解决方案
    linux配置双线策略
    Discuz! X2.5读写分离
    慢谈MYSQL常用SQL语句
    CentOS 6.5系统安装配置LAMP(Apache+PHP5+MySQL)服务器环境
    自动抓包shell脚本
    zabbix实施部署原理架构
    ftp搭建教程
    DNS搭建教程
  • 原文地址:https://www.cnblogs.com/badaoliumangqizhi/p/11726275.html
Copyright © 2011-2022 走看看