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

小咪咪 2023-10-11 13:51 167阅读 0赞

场景

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

效果如下:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JBREFPX0xJVU1BTkdfUUlaSEk_size_16_color_FFFFFF_t_70

注:

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

实现

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

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JBREFPX0xJVU1BTkdfUUlaSEk_size_16_color_FFFFFF_t_70 1

在button的点击事件中

首先加载frm模板文件

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

对模板中的TextObject进行赋值

  1. foreach (Control ctl in this.panelControl1.Controls)
  2. {
  3. string[] strs = ctl.Name.Split('_');
  4. if (strs.Length > 1)
  5. {
  6. string changeText = null;
  7. if (strs[1].Equals("Date"))
  8. {
  9. //日期处理
  10. DateEdit dateEdit = ctl as DateEdit;
  11. DateTime date = (DateTime)dateEdit.EditValue;
  12. changeText = date.ToLongDateString().ToString();
  13. }else if (strs[1].Equals("Time"))
  14. {
  15. //时间处理
  16. TimeEdit dateEdit = ctl as TimeEdit;
  17. DateTime time = (DateTime)dateEdit.EditValue;
  18. changeText = time.ToLongTimeString().ToString();
  19. }
  20. else
  21. {
  22. changeText = ctl.Text;
  23. }
  24. //找到 Name属性为T的控件
  25. var t = report.FindObject("Text_" + strs[1]) as TextObject;
  26. if (t != null)
  27. {
  28. //修改控件值
  29. t.Text = changeText;
  30. }
  31. }
  32. }

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

  1. var graph = report.FindObject("Picture2") as PictureObject;
  2. //获取图像
  3. System.Drawing.Image image = MainViewContent.mainViewContent.zedGraphControl1.GetImage();
  4. //照片旋转90度
  5. image.RotateFlip(RotateFlipType.Rotate90FlipNone);
  6. graph.Image = image;

绑定并显示预览窗口

  1. //绑定预览控件 不然会弹出新的窗口
  2. report.Preview = this.previewControl1;
  3. //显示预览窗口
  4. report.Prepare();
  5. report.ShowPrepared();

显示另存为窗口

  1. //显示另存为窗口
  2. SaveFileDialog saveDialog = new SaveFileDialog();
  3. //设置默认文件扩展名。
  4. saveDialog.DefaultExt = "pdf";
  5. //设置当前文件名筛选器字符串,该字符串决定对话框的“另存为文件类型”或“文件类型”框中出现的选择内容。
  6. saveDialog.Filter = "pdf文件|*.pdf";
  7. //设置文件名
  8. saveDialog.FileName = fileName;
  9. //用默认的所有者运行通用对话框。
  10. saveDialog.ShowDialog();
  11. //如果修改了文件名,用对话框中的文件名名重新赋值
  12. fileName = saveDialog.FileName;
  13. //被点了取消
  14. if (fileName.IndexOf(":") < 0) return;
  15. FastReport.Export.Pdf.PDFExport export = new FastReport.Export.Pdf.PDFExport();
  16. report.Export(export, fileName);
  17. //即保存后打开Excel
  18. System.Diagnostics.Process.Start(fileName);

发表评论

表情:
评论列表 (有 0 条评论,167人围观)

还没有评论,来说两句吧...

相关阅读