场景
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);