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预览并弹出另存为对话框。

效果如下:

Winforn中使用FastReport实现点击导出按钮PDF预览并弹出另存为对话框_第1张图片

 

注:

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

实现

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

Winforn中使用FastReport实现点击导出按钮PDF预览并弹出另存为对话框_第2张图片

 

在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 > 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);

 

你可能感兴趣的:(FastReport,C#)