欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

如何在MVC中快速打印报表

程序员文章站 2022-06-25 10:10:43
...

【点击下载FastReport .Net v2018.1最新版本】

为了使网页报表与网页的风格保持一致,许多web报表都禁用了WebReport工具栏。也因为这样,用户被剥夺了用于导出和打印报表的选项。但是,如果你仍希望让用户能从浏览器中打印报表,则可以创建一个特殊的打印按钮。通过点击它,用户将收到一个打印对话框。

现在我将向你展示如何在MVC Web项目中调用打印对话框。

首先,在视图中添加一个按钮。我把它发布在Web应用程序demo的主页上。我们在解决方案资源管理器(Solution Explorer)中找到文件Index.cshtml:

如何在MVC中快速打印报表

将按钮添加到所需的位置:

@using (Html.BeginForm("Print", "Home"))
 {
 <input id="print" type="submit" value="Print" />
 }

这里Print是控制器中处理句柄的名称。Home是控制器的名称。

转到Controllers folder. HomeController.cs文件:

如何在MVC中快速打印报表

将该方法添加到类代码中:

public void Print()
 {
 WebReport webReport = new WebReport();
 System.Data.DataSet dataSet = new System.Data.DataSet();
 dataSet.ReadXml("C://Program Files (x86)//FastReports//FastReport.Net//Demos//Reports//nwind.xml");
 webReport.Report.RegisterData(dataSet, "NorthWind");
 webReport.Report.Load("C://Program Files (x86)//FastReports//FastReport.Net//Demos//Reports//Simple List.frx");
 webReport.EmbedPictures = true;
 webReport.PrintHtml();
 }

如你所见,我们添加了一个名为Print的方法。让我们仔细看看代码。

在第一行中,我们创建了一个​​WebReport对象的实例。然后,我们创建了一个DataSet来处理数据。DataSet可以使用xml数据库。实际上在第三行我指定了这个数据库的路径。使用RegisterData方法,我们将数据源注册到报表对象中。然后,将报表模板加载到报表对象中。它位于与数据库相同的文件夹中。EmbedPictures属性允许你在html报表文件中嵌入图像。最后,最后一行开始在浏览器中打印报表。

如果要将报表保存为PDF格式,则只需将最后一行替换为:

webReport.PrintPdf();

在这种情况下,您可以使用选项来格式化PDF文件。例如:

webReport.PdfPrintOptimized = true;

此选项为打印提供最佳图像质量。

现在您需要在Web.config中添加处理句柄:

如何在MVC中快速打印报表

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

现在运行应用程序。网页上的按钮如下所示:

如何在MVC中快速打印报表

点击按钮。我们得到一个带有报表和打印对话框的页面:

如何在MVC中快速打印报表

这里是PDF的保存:

如何在MVC中快速打印报表

通过这种方式,你可以使用自定义按钮调用打印对话框,而不是从WebReport工具栏中调用。当你将报表控件嵌入到网页设计中时,这会很有帮助。

在上面的例子中,我们没有添加网页报表对象到网页。报表在打印之前,在单独的页面内建立。如果你不需要在网页上显示报表时,这也很有用。