场景

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 + @"\data\Report", "ExportPDF.frx");
//先清理一下
report.Clear();
//然后加载模板文件
report.Load(reportFile);

对模板中的TextObject进行赋值

foreach (Control ctl in this.panelControl1.Controls)
{
string[] strs = ctl.Name.Split('_');
if (strs.Length > )
{
string changeText = null;
if (strs[].Equals("Date"))
{
//日期处理
DateEdit dateEdit = ctl as DateEdit;
DateTime date = (DateTime)dateEdit.EditValue;
changeText = date.ToLongDateString().ToString();
}else if (strs[].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[]) 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(":") < ) return;
FastReport.Export.Pdf.PDFExport export = new FastReport.Export.Pdf.PDFExport();
report.Export(export, fileName);
//即保存后打开Excel
System.Diagnostics.Process.Start(fileName);

Winforn中使用FastReport实现点击导出按钮PDF预览并弹出另存为对话框的更多相关文章

  1. 实现在easyui中的datagrid,点击某一列的列头弹出combobox下拉框

    easyUI  datagrid在列头加下拉框,实现对列内容的筛选. 代码: onLoadSuccess: function (data) {//Fires when data is loaded s ...

  2. JavaScript三在弹出的对话框中

    据悉js小伙伴会发现,我们在某些情况下使用的alert()办法.prompt()办法.prompt()办法.它们在屏幕上的对话框.容,使用这样的方法使得页面的交互性更精彩.实际上我们常常会在进行网页浏 ...

  3. ASP.NET点击按钮弹出确认对话框方法

    开发asp.net网页应用程序的时候,有些页面的按钮需要增加一个确认对话框,比如: 实现这个功能比较简单,代码这样写: Button.Attributes["onclick"] = ...

  4. boostrap 弹出模态对话框,点击黑色区域不会关闭

    $('#ID_ReformDetail').modal({ backdrop: 'static', keyboard: false }); 弹出模态对话框且点击黑色部分不会关闭. <div cl ...

  5. 将w3cplus网站中的文章页面提取并导出为pdf文档

    最近在看一些关于CSS3方面的知识,主要是平时看到网页中有很多用CSS3实现的很炫的效果,所以就打算系统的学习一下.在网上找到很多的文章,但都没有一个好的整理性,比较凌乱.昨天看到w3cplus网站中 ...

  6. JS-DOM2级封装练习题--点击登录弹出登录对话框

    <!doctype html><html lang="en"> <head> <meta charset="UTF-8" ...

  7. 宣布发布 Windows Azure 导入/导出服务的预览版以及 Web 和移动解决方案场景的若干增强功能

    客户评估基于云的存储解决方案时,面临的挑战之一是以经济高效.安全快速的方式从 Blob 存储区移进和移出大量数据.今天,我们很高兴地宣布发布 Windows Azure 导入/导出的预览版,这款新服务 ...

  8. 点击查看大图滑动预览(h5,pc通用)

    点击预览大图并滑动观看,支持手机端和pc端,具体功能如下图: 一. touchTouch 的js和css 以及jquery依赖库 <link rel="stylesheet" ...

  9. 点击手机返回键弹出Dialog对话框功能

    在程序中,我们为了防止出现客户在使用程序填信息或者浏览页面时因误点返回键造成关闭界面的现象,需要添加弹出框功能,以确认客户是否要退出本界面,下面是功能实现的代码: 1.点击手机返回键的判断 publi ...

随机推荐

  1. 五个常用的CSS简写

    1,margin/padding. (演示仅为margin,padding同理,需注意的是padding没有auto) 2.background. background: [background-co ...

  2. [视频教程] redis中的bit运用统计用户在线天数

    位运算在redis中非常的方便使用,并且理由利用这个可以实现很多特殊的功能.这也迫使我去研究更多的redis提供的函数,只有研究的多,思路才能够更加开放.今天我就对strings下面的几个函数进行了测 ...

  3. MVC 、MTV 模式

    著名的MVC模式:所谓MVC就是把web应用分为模型(M),控制器(C),视图(V)三层:他们之间以一种插件似的,松耦合的方式连接在一起. 模型负责业务对象与数据库的对象(ORM),视图负责与用户的交 ...

  4. docker镜像导入导出备份迁移

    导出: docker save -o centos.tar centos:latest #将centos:latest镜像导出为centos.tar文件 导入: docker load -i cent ...

  5. C++学习二 vector的用法(使用sort对于vector排序)

    一.vector的介绍 vector是C++里面的一个容器,也是我们数学上面理解的向量,有一些比较常见的操作. 二.vector的定义 #include<vector> using nam ...

  6. 【第1题】 Pythonn内存管理以及垃圾回收机制

    内存管理 Python解释器由c语言开发完成,py中所有的操作最终都由底层的c语言来实现并完成,所以想要了解底层内存管理需要结合python源码来进行解释. 1. 两个重要的结构体 include/o ...

  7. pyse基本操作命令一

    #coding=utf-8import timefrom selenium import webdriver dr = webdriver.Chrome()# dr = webdriver.Ie()d ...

  8. c++类的学习笔记

    用结构体数据的安全性得不到保证. 使用类对数据进行封装,只能通过函数修改类中的数据 (1)类的定义 class 类名 { private: protected: public: }; private: ...

  9. 【笔记】Clean Code(持续更新)

    这个暑假出来实习,第一次体会到在一个团队中开发的体验,与网上的网站看到的大为不同,以前看网上说什么程序员写了屎山代码,写了一堆模糊的注释或者说垃圾代码不写注释. 但在我的实习体验中,代码虽然看起来很多 ...

  10. 物联网架构成长之路(36)-Vue前端入门

    1. 前言 物联网平台,需要有一个类似大屏看板的功能. 找了一圈,发现阿里已经有对应的DataV产品,但是那个价格有点贵啊.所以找了这个[http://datav.jiaminghi.com/demo ...