彩票走势图

报表开发工具FastReport.NET使用教程:如何在 Visual Basic 的 ASP .NET MVC 应用程序中创建报表

翻译|使用教程|编辑:凌霄汉|2022-04-11 15:56:48.100|阅读 375 次

概述:本篇文章将为大家带来报表开发工具FastReport.NET使用教程:如何在 Visual Basic 的 ASP .NET MVC 应用程序中创建报表。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

Visual Basic .NET 编程语言被许多人视为入门级语言。但当然,事实并非如此。我们已经习惯知道 Visual Basic.NET 最常用于桌面应用程序。然而,这种语言允许做更多的事情——例如,在 ASP .NET 框架上创建 Web 应用程序。

ASP .NET 支持 MVC(模型-视图-控制器)编程模式,与常规 ASP .NET 相比,它极大地简化了应用程序扩展和测试。此模板有多种变体,但主要思想保持不变 - 界定业务逻辑和表示之间的责任区域。所有现代 Web 框架都建立在这种结构之上。因此,使用 Visual Basic .NET,您可以轻松地在 Angular 或任何其他框架中创建前端 Web 应用程序。

但是让我们回到本文的主题——报告生成。报告生成程序在“2000 年代”之初就已经强势进入我们的生活,而现在只有少数人敢于“从头开始”创建报告。这应该是一份真正独特的报告,超出任何发电机的能力。这听起来很讽刺,但这种情况确实会发生。在使用报表生成器之前,生成报表的具体逻辑确实会成为障碍。但是,也许您只是不知道它们的所有可能性。例如,很少有人知道并使用从FastReport .NET报告生成器中的用户应用程序代码创建报告模板的能力。这种创建报告的方式为您提供了直接在程序代码中控制模板结构和生成过程的独特机会。

是的,这种报告生成方式需要对产品有很好的了解,即报告的结构、对象及其属性。因此,开发商应具备足够的资质。

让我们停止这些争论,开始创建一个演示程序,该程序从 VisualBasic 语言的 ASP .NET MVC Web 应用程序的代码生成报告。

首先,您需要为此创建一个合适的项目。

报表开发工具FastReport.NET使用教程:如何在 Visual Basic 的 ASP .NET MVC 应用程序中创建报表

Visual Studio 将为您精心创建一个现成的演示应用程序,并具有现成的结构。您所要做的就是连接 FastRport .NET 库并添加用于创建报告的代码。

让我们将库添加到项目的引用(References)中:FastReport.dll、FastReport.Web.dll。您将在已安装的 FastReport .NET 程序的根目录中找到这些库。

让我们使用一个现成的控制器来编写主逻辑——HomeController:

‘Linking of necessary libraries
Imports System.Drawing
Imports FastReport
Imports FastReport.Data
Imports FastReport.Utils
Imports FastReport.Web
 
‘altering the Index
Function Index() As ActionResult
 
 Dim AppFolder As String
 Dim report As New WebReport() 'create instance of class Report Dim ds As New DataSet() 'create dataset object 
 AppFolder = "C:\Users\FR\source\repos\WebAppVB\WebAppVB\App_Data"
 'load data ds.ReadXml(AppFolder + "\nwind.xml")
 report.RegisterData(ds)
 report.Report.GetDataSource("Products").Enabled = True
 
 'create report page Dim page As New ReportPage()
 report.Report.Pages.Add(page) 'add created page to report page collection page.CreateUniqueName() 'with generated name 
 'create group header band Dim group As New GroupHeaderBand()
 page.Bands.Add(group) 'add the band to band collection group.CreateUniqueName() 'with generated name group.Height = Units.Centimeters * 1
 group.Condition = "[Products.ProductName].Substring(0,1)" 'set the group condition group.SortOrder = FastReport.SortOrder.Ascending 'and set sort order 
 'create text object Dim groupTxt As New TextObject()
 groupTxt.Parent = group 'set the object on whitch the text will be shown groupTxt.CreateUniqueName()
 groupTxt.Bounds = New RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 1) 'set the text object bounds groupTxt.Text = "[[Products.ProductName].Substring(0,1)]" 'set the text value groupTxt.Font = New Font("Arial", 14, FontStyle.Bold) 'set the font style groupTxt.VertAlign = VertAlign.Center ' set the text align groupTxt.Fill = New LinearGradientFill(Color.LightGoldenrodYellow, Color.Gold, 90, 0.5F, 1) 'set the text object fill 
 'create data band Dim data As New DataBand()
 group.Data = data 'set the group data data.CreateUniqueName()
 data.DataSource = report.Report.GetDataSource("Products") 'set data band source data.Height = Units.Centimeters * 0.5F 'set data band height 
 'create one more text object Dim productText As New TextObject()
 productText.Parent = data 'add the text object to data band productText.CreateUniqueName()
 productText.Bounds = New RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 0.5F) 'set the text object bounds productText.Text = "[Products.ProductName]" 'set the text value 
 'create group footer band group.GroupFooter = New GroupFooterBand()
 group.GroupFooter.CreateUniqueName()
 group.GroupFooter.Height = Units.Centimeters * 1 'set the group footer height 
 'create total object Dim groupTotal As New Total()
 groupTotal.Name = "TotalRows" 'set total object name groupTotal.TotalType = TotalType.Count 'set total type groupTotal.Evaluator = data 'set the band for which the total will be calculated groupTotal.PrintOn = group.GroupFooter 'set the total place report.Report.Dictionary.Totals.Add(groupTotal) 'add the total object to totals collection 
 'create text object Dim totalText As New TextObject()
 totalText.Parent = group.GroupFooter 'set the object on whitch the text will be shown totalText.CreateUniqueName()
 totalText.Bounds = New RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 0.5F) 'set the text object bounds totalText.Text = "Rows: [TotalRows]" 'set the text value totalText.HorzAlign = HorzAlign.Right 'set the text align totalText.Border.Lines = BorderLines.Top 'set the border lines type 
 ViewBag.WebReport = report
 Return View()
 End Function

从注释到代码,很明显我们正在创建报表对象,以及构建清晰的层次结构和依赖关系。例如,必须将所有带区添加到页面中,并且文本字段放置在带区上或其他对象(例如表格或矩阵)内。重要的是不仅要建立依赖关系,而且要正确设置对象的属性——它们的大小、相对于父对象的位置等等。所有这些细节都形成了一份报告。因此,此方法需要对 FastReport.NET 产品有很好的了解。

我们演示应用程序中的每个 Web 方法都已经有一个视图。在 Views 文件夹中,找到 Index.vbhtml。将以下代码行粘贴到方便的位置:

@ViewBag.WebReport.GetHtml()

在这里,我们正在执行将 Web 报表转换为 HTML 的方法。当然,除了 html,它还会包含样式、脚本、图片——一般来说,是在网页上显示报告所需的一切。

在 Views 文件夹中有一个 Web.config 前端应用程序的配置文件。让我们为其添加新的命名空间:

 <namespaces>
<add namespace="FastReport" />
<add namespace="FastReport.Web" />
</namespaces>

在同一个文件夹中,还有另一个需要编辑的文件——Views/Home/Shared/_Layout.vbhtml。让我们添加 FastReport 库的脚本和样式的使用:

<head>
@WebReportGlobals.Scripts()
@WebReportGlobals.Styles()
</head>

项目的根目录下还有另一个 Web.config。在</system.web> 部分之后添加:

 <system.webServer>  
 <handlers>  
 <add name="FastReportHandler" path="FastReport.Export.axd" verb="*" type="FastReport.Web.Handlers.WebExport"/> 
 </handlers>
 </system.webServer>

我们的应用程序已准备好运行。让我们确保它有效。

报表开发工具FastReport.NET使用教程:如何在 Visual Basic 的 ASP .NET MVC 应用程序中创建报表

就是这样:我们在程序代码中创建了一个完整的报告。它看起来像是由特殊的视觉设计师创建的报告。但是,当然,这在代码中更难做到。因此,我们建议仅在无法在报表内部实现复杂逻辑的特殊情况下使用此方法。


FastReport 技术交流群:702295239    欢迎一起进群讨论


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP