企业项目实战.Net Core +FastReport教程二|绑定报表数据及自定义功能设置


上一篇,主要讲述利用FastReport如何实现报表模板的制作,地址:企业项目实战.Net Core +FastReport教程一|制作报表模板

报表系列教程目录

      • 前言
        • 报表是什么?
        • 报表的作用是什么?
        • 为什么选择 FastReport 报表?
      • 报表设计器介绍
        • 二次开发报表设计器
        • 制作报表模板的步骤
          • 定义数据集
          • 报表设计
          • 报表预览
          • 存储报表
      •  使用 Asp.net Core  
        报表常用控件介绍
        • 添加报表项目类库
        • 引入 Nuget 包
        • 启用视图与 FastReport 库的支持
        • 加载报表
        • 功能自定义设置
          • 自定义分页
          • 导出 Excel
          • 打印 PDF
      • 常用函数介绍
      • 常用参数介绍
      • 结语

正文

 使用Asp.net Core

添加报表项目类库

 (图一)

引入Nuget包

 (图二)

启用视图与FastReport库的支持

在应用程序下的StartUp类中的Configure方法,加入UseFastReport方法;

 (图三)

注册数据

视图加载报表

视图中引入@FastReport.Web.WebReport

@ViewBag.WebReport.RenderSync()

功能自定义设置

自定义分页

通过ajax调用fastreport内置方法,实现局部页面刷新;

视图:

增加一个分页自定义视图,里面有首页、上一页,下一页,尾页,页数,每页条数,共多少条;

脚本:

增加首页、上一页,下一页,尾页四个脚本方法,然后通过ajax调用控制器中的重写方法;

如需具体代码,请加Q一起讨论:2312935133

导出Excel

视图

@Html.ActionLink("导出", "ExportExcel", null, new { @reportName = "xxx" }, new { @class = "样式名称", @id = "按钮ID" })

控制器

   public FileResult ExportExcel()
        {


            FastReport.Export.OoXML.Excel2007Export xlsExport = new FastReport.Export.OoXML.Excel2007Export();
            xlsExport.ShowProgress = false;
            using (var ms = new MemoryStream())
            {
                xlsExport.Export(report.Report, ms);
                ms.Position = 0;
                var xlsFileName = "Demo-" + DateTime.Now.ToString("HH-mm-ss") + ".xlsx";
                return File(ms.ToArray(), "application/vnd.ms-excel", xlsFileName);
            }
        }

打印PDF

视图

@Html.ActionLink("打印", "Print", null, new { @reportName = "xxx" }, new { @class = "样式名称", @id = "按ID",@target="_blank" })

控制器

因开源代码把PDF打印方法阉割,需反编译相关文件,且需把WebReport对象重写,打印代码放到该类中;

 public IActionResult PrintPdf()
        {
            using (var pdfExport = new PdfExport())
            {
                pdfExport.OpenAfterExport = false;
                pdfExport.ShowPrintDialog = true;
                pdfExport.ExportMode = PdfExport.ExportType.WebPrint;

                using (MemoryStream ms = new MemoryStream())
                {
                    pdfExport.Export(Report, ms);
                    return new FileContentResult(ms.ToArray(), "application/pdf");
                }
            }
        }

然后在控制器中创建Print方法后,直接点出该打印方法即可,如下图:

   public IActionResult Print()
        {  
            return report.PrintPdf();
        }

结语

本次系列教程来源于项目实战,开发内容全部基于Fastreport开源代码且部分功能是经过DLL反编译实现,有些功能还在实践摸索中,后续教程会不定期发布。

加Q一起来讨论:2312935133

FastReport开源代码地址:https://github.com/FastReports/FastReport