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对应分页。

时间: 2024-10-26 13:55:31

FastReport快速打印(.net)的相关文章

iOS调试技巧之打印输出 -----A: (NSString *)description B:自定义LOG C:使用第三方插件快速打印

A:重写- (NSString *)description函数 如果有一个Product 产品对象  Product.h中 1 #import <Foundation/Foundation.h> 2 3 typedef enum : NSUInteger { 4 RED = 1, 5 GREEN, 6 } ProductColor; 7 8 @interface Product : NSObject 9 10 @property (nonatomic, assign) ProductColor

FastReport配置打印预览按钮_C++

如需转载请标明出处:http://blog.csdn.net/itas109 FastReport采用C++方式,配置打印预览选项 //打印预览 //配置打印预览选项 pReport->PreviewOptions->Buttons = frxPreviewButtons( pb_Find//查找 +pb_PageSetup//页面设置 +pb_Print//打印 +pb_ExportQuick//导出为PDF +pb_Zoom//放缩 +pb_NoEmail//没有Email +pb_NoF

Excel快速打印底端标题,教你一招,肯定行!

pdf技巧之家 2018-11-10 11:06:00今天跟大家分享一个关于Excel如何快速打印底端标题的技巧,需要的赶紧学起来! 方法步骤: 首先我们在工作表中输入底部要显示的标题文字,然后使用截图工具把这部分文字截图保存为图片,接下来将工作表中的底端标题文字清除掉. 点击工具栏[页面布局]--[打印标题]--[页面设置].单击[顶端标题行],然后编辑右侧的折叠按钮,单击第一行的行号,这样就轻松选中了第一行作为顶端标题行. 点击[页眉/页脚]--[自定义页脚],打开[页脚]对话框,单击[中]

为Excel电子表格添加快速打印功能按钮的方法

对于需要频繁切换打印机来完成打印工作的人来说,切换打印机的重复操作非常繁琐且没有效率.其实微软早就为大家准备了各种解决重复劳动的各种工具,比如“快速访问工具栏”和“宏”.下面笔者就跟大家来讲讲如何利用这两个工具来为Excel电子表格添加快速打印的功能按钮,只要轻轻点击一下这个按钮,内容就会发送至指定的打印机进行打印,而不用管当前默认的打印机是哪一台. 一.添加“快速打印”功能按钮 首先打开Excel电子表格,点开窗口左上角下拉箭头的“自定义快速访问工具栏”,然后选择相应的功能即可.比如我们选择“

重复造轮子系列——基于FastReport设计打印模板实现桌面端WPF套打和商超POS高度自适应小票打印

重复造轮子系列——基于FastReport设计打印模板实现桌面端WPF套打和商超POS高度自适应小票打印 一.引言 桌面端系统经常需要对接各种硬件设备,比如扫描器.读卡器.打印机等. 这里介绍下桌面端系统打印经常使用的场景. 1.一种是类似票务方面的系统需要打印固定格式的票据.比如景点门票.车票.电影票. 这种基本是根据模板调整位置套打. 2.还有一种是交易小票,比如商超POS小票,打印长度会随着内容的大小自动伸缩. 这种就不仅仅是固定格式的套打了,还得计算数据行以适应不同的打印长度. 打印方式

使用功能强大的插件FastReport.Net打印报表实例

我第一次使用FastReport插件做的功能是打印一个十分复杂的excel表格,有几百个字段都需要绑定数据,至少需要4个数据源,而且用到横向.竖向合并单元格. 我不是直接连接数据库,而是使用RegisterData的方式自己注册DataSet对象,所有的表Table都是代码生成,填充到DataSet中,然后注册到控件中. 最开始尝试使用这个插件做一个简单的功能使用的就是下面的例子,不过花了一整天,还请假了4个人都没有搞出来,晚上拿着别人的模板直接修改,然后测试,就通过了. 之前测试,一直都提示未

【转】fastreport常用打印设置

转自:http://guohongjian81.blog.163.com/blog/static/34535941201011109592160/ 1.单据中有多行数据,但预览时只显示部分内容,或者打印内容行与行之间有间隔FASTREPOR属性中:设置RowCount=0,Start New Page为False:Stretched为True. 说明: RowCount:控制总共打印几行:RowCount=0是打印全部: Start New Page:打印前先跳页:每页打印一行: Stretch

Eclipse用法和技巧二十:一个快速打印技巧

调试的时候经常用到打印语句,当需要添加的说明字符串和需要打印的数值混淆到一起的时候,需要先写字符串如,"the string here is",接着再输入变量的值.这样一来一去还是比较麻烦的.下面介绍一种方法,可以大大的提高效率.        步骤一:假定需要打印temp的值,先输入完整的打印字符串: 步骤二:选中temp,按住神键Ctrl+1: 步骤三:选择提示选项,在删除双引号即大功告成.在需要打印的变量混淆在提示字符串中,这个方法能大大加快输入速度. 上一篇文章,Eclipse

vim 脚本之快速打印log

" zsl_log.vim" Version: 1.0 if exists("g:zsl_loaded_log") || &cp || v:version < 700  finishendiflet g:zsl_loaded_log = 1 "基础函数function AddLog()  let zslinde = max([indent(line(".")), indent(line(".")+1)]