FastReport快速打印(.net)

我第一次使用FastReport插件做的功能是打印一个十分复杂的excel表格,有几百个字段都需要绑定数据,至少需要4个数据源,而且用到横向、竖向合并单元格。

  我不是直接连接数据库,而是使用RegisterData的方式自己注册DataSet对象,所有的表Table都是代码生成,填充到DataSet中,然后注册到控件中。

  最开始尝试使用这个插件做一个简单的功能使用的就是下面的例子,不过花了一整天,还请假了4个人都没有搞出来,晚上拿着别人的模板直接修改,然后测试,就通过了。

  之前测试,一直都提示未连接到数据源,原因是我直接使用记事本来向模板添加数据源导致的,平时别人使用的数据源都是自己写代码,调用Design的方式得到的,而且只能是winform程序,webform程序不行,因为要启动com组件。

  下面是我总结的特别简单的一个方式,使用RegisterData的方式自己注册DataSet对象。

1,          选择【File】-》【New】 新建FastReport模板,选择下图的1。

                       

2,          选择【View】-》【Data】,显示如下,导出Dictionary,保存。

 

3,          编辑导出的.frd文件,编辑完后保存,再导入。

如下:

(1)  TableDataSource 是数据源节点。

(2)  Name是DataSet对象的Table的表名。

(3)  Column是Table的列,模板绑定数据时,使用Column的Name属性。

<?xml version="1.0" encoding="utf-8"?>

<Dictionary>

  <TableDataSource Name="Table1" ReferenceName="Data.Table1" DataType="System.Int32" Enabled="true">

    <Column Name="姓名" DataType="System.String" PropName="Column"/>

    <Column Name="密码" DataType="System.String" PropName="Column"/>

  </TableDataSource>

</Dictionary>

4,          编辑模板,添加一个Table控件。

第一行直接双击输入文本;第二行直接将右边的数据源托到单元格中;

设置边框、字体。

 

5,          添加事件后台方法

如下图,选中Table1,在事件ManualBuild的后面双击,添加下面的代码:

 

    // 控件Table1的构建事件

    private void Table1_ManualBuild(object sender, EventArgs e)

    {

        DataSourceBase data1 = Report.GetDataSource("Table1"); // 获取DataSet中表名为Table1的数据源

        data1.Init(); // 初始化

        Table1.PrintRow(0); // 控件Table1打印第0行

        Table1.PrintColumns(); // 每打印一行,都要调用 PrintColumn或PrintColumns

        while(data1.HasMoreRows) // 打印重复循环的行

        {

            Table1.PrintRow(1);

            Table1.PrintColumns();

            data1.Next(); // 读取下一行

        }

    }

说明:

(1)   Table控件是从第0行开始的。

(2)   绑定数据的重复行,算作一行。

(3)   输出行之前,要先调用Init() 方法,当有两个数据源,比如data1和data2,data1又是data2的父数据源,需要把data1当做参数,如 data2.Init(data1);

(4)   每打印一行,都要调用 PrintColumn或PrintColumns

6,          添加c#代码

新建一个测试页面test.aspx,将一个FastReport控件拖放到页面上(只有按照过FastReport.net,且引用了FastReport.dll,FastReport.Bars.dll,FastReport.Web.dll之后才可以)

添加后页面如下:

<body>

    <form id="form1" runat="server">   

    <cc1:WebReport ID="webReport" runat="server" OnStartReport="WebReport_StartReport" />

    </form>   

</body>

后台方法:

        protected void WebReport_StartReport(object sender, EventArgs e)

        {

            DataSet ds = new DataSet();

            DataTable table1 = new DataTable();

            table1.TableName = "Table1"; // 一定要设置表名称

            ds.Tables.Add(table1);

            // 添加表中的列

            table1.Columns.Add("姓名", typeof(string));

            table1.Columns.Add("密码", typeof(string));

            // 任意添加一些数据

            for (int i = 0, maxI = 10; i < maxI; i++)

            {

                DataRow row = table1.NewRow();

                row["姓名"] = "我是" + i.ToString();

                row["密码"] = i.ToString();

                table1.Rows.Add(row);

            }

            Report FReport = (sender as WebReport).Report;       

            string sPath = GetReportsPath("test.frx") ;

            FReport.Load(sPath);

            // 将DataSet对象注册到FastReport控件中

            FReport.RegisterData(ds);

        }

        /// <summary>

        /// 获取fastreport模板的路径

        /// </summary>

        /// <param name="sReportName">模板名称</param>

        /// <returns>返回模板路径</returns>

        public string GetReportsPath(string sReportName)

        {

            return FastReport.Utils.Config.ApplicationFolder + "Reports\\" + sReportName;

        }

7,          测试效果

1对应保存,可以是各种格式;

2对应打印;

3对应分页。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个指南让你熟悉报表设计器和了解报表设计的基本概念(各种区域,数据源,二次表,等等)。指南将帮助你开始用FastReport创建报表,但它不能告诉你怎样使用其它基本的报表设计器。 如果你不熟悉报表设计器,我们建议你参考QuickReport的帮助系统。QuickReport的指南已经包含在你的Delphi拷贝中。QuickReport的大部分基本概念也适用于FastReport,然而,FastReport能提供更多的弹性和最终用户的自定义。 关于FastReport的说明 FastReport是高弹性的报表设计器,用于报表的数据可以从任何类型的数据源获取,包含字符列表,BDE数据库,ADO数据源(不使用BDE),Interbase(使用IBO),Pascal数组和记录,以及一些不常用的数据源。 整个FastReport系统是用Delphi的Pascal编写的。FastReport不需要动态链接库,但需在你的项目中占用大约400kb(Delphi 5)。如果你想最终用户拥有设计能力,这将在你的.EXE中增加大约500kb。虽然这看上去比较大,但这只是其它设计的几分之一。你同样应该考虑到FastReport不仅仅只是包含最终用户更改报表设计的能力,还能够适应查询和数据库的变化。FastReport还包含自己的脚本语言,让应用程序和最终用户能够更容易地改变报表。如果你的大部分应用使用FastReport,你可以简单地配置FastReport BPL(大约1400kb)而所有你的应用程序只需要保留很少的一部分。 你可以发现FastReport有一个非常吸引人的用户界面,使用最新的用户界面组件,例如可停靠的工具栏。你的最终用户将会非常愿意使用这个设计器,只需使用鼠标就可以创建大多数报表。 FastReport是名副其实的快速报表:较其它一些Delphi报表设计器而言,你可以发现没有什么可以接近于它的开发速度。报表预览窗口一直是大多数报表设计器的弱点,高品质的外观,赋于你的应用程序非常专业的用户界面。 FastReport是一个已经拥有三年历史的非常成熟的报表设计器,成长使它拥有其它Delphi报表设计器所不能相比的诸多先进特性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值