• 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);
  • 相关阅读:
    消息中间件(一)MQ详解及四大MQ比较
    SIP协议
    PAT (Basic Level) Practice 1008 数组元素循环右移问题
    LeetCode-Algorithms 1. 两数之和
    PAT (Basic Level) Practice 1040 有几个PAT
    PAT (Basic Level) Practice 1023 组个最小数
    PAT (Basic Level) Practice 1021 个位数统计
    PAT (Basic Level) Practice 1007 素数对猜想
    PAT (Basic Level) Practice 1006 换个格式输出整数
    PAT (Basic Level) Practice 1004 成绩排名
  • 原文地址:https://www.cnblogs.com/badaoliumangqizhi/p/11726275.html
Copyright © 2020-2023  润新知