提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:凌霄汉|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 应用程序的代码生成报告。
首先,您需要为此创建一个合适的项目。
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 技术交流群:702295239 欢迎一起进群讨论
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢