百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

C#中FastReport报表的使用总结

haoteby 2025-05-25 12:44 3 浏览

FastReport报表很好用,当然前提是在网上找个大家都懂的版本,不然每年的费用也挺贵的了,接下来说说使用中遇到的一些小问题及解决方法。

报表中表格单元格宽和高

有时候需要固定报表中表格的大小,设置相同的宽和高,很无语的是选中单元格时是无法设置的,需要选中一行或一列,也可以是多行或多列,才能设置。

你要是选中一个或多个单元格时,它是没有宽和高属性的。

报表中的数据源

我们一般都是在软件中编写代码来给报表设置数据源的,如果是直接在FastReport报表设计器中新建据源,会比较复杂,需要连接到具体的数据库,还要提供用户名和密码。

更简单的方法是不要在这里设置,而是用记事本打开设计的报表,手动把数据源增加进去,然后再用报表设计器打开后就能直接使用了,也能在报表设计器中新增数据列了。

在记事本中<Dictionary>下增加数据源部分,有名字和别名,我还没改了。

 <Dictionary>
    <TableDataSource Name="THD" ReferenceName="Data.THD" DataType="System.Int32" Enabled="true">
      <Column Name="分" DataType="System.String" PropName="入库单号"/>
      <Column Name="角" DataType="System.String" PropName="编码"/>
      <Column Name="元" DataType="System.String" PropName="名称"/>
      <Column Name="拾" DataType="System.String" PropName="别名"/>
      <Column Name="佰" DataType="System.String" PropName="规格型号"/>
      <Column Name="仟" DataType="System.String" PropName="单位"/>
      <Column Name="万" DataType="System.String" PropName="数量"/>
      <Column Name="十万" DataType="System.String" PropName="入库时间"/>
      <Column Name="百万" DataType="System.String" PropName="备注"/>
      <Column Name="仟万" DataType="System.String" PropName="ID"/>
      <Column Name="亿" DataType="System.String" PropName="Column"/>
    </TableDataSource>

但是它只能新增计算列,不用管它,新增以后修改一下就变成正常列了。

在C#中使用报表

把设计好的报表模版放在软件目录下,然后加载它,做一些前期的准备工作,下面是加载报表模版并初始化它

string path = Environment.CurrentDirectory + @"\ShouJu.frx";
Report rp = new Report();
rp.Clear();
rp.Load(path);

准备报表的参数

如果你的报表是把某一行的数据读取出来,然后格式化打印成需要的样式,那么这种情况下不需要准备数据源,只需要准备参数就可以了。

//增加参数
rp.SetParameterValue("标题", biaoti);
rp.SetParameterValue("日期", rq);
rp.SetParameterValue("编号", String.Format("{0:0000000}", Convert.ToInt32(bh)));
rp.SetParameterValue("交款单位", jkdw);
rp.SetParameterValue("收款方式", skfs);
rp.SetParameterValue("金额大写", tm.MoneyToUpper(jine));
rp.SetParameterValue("收款事由", sksy);

准备报表的数据源

如果除了参数外还有多行的数据,那么就需要提供数据源了,其实就是把一个DataSet塞进去就行了,需要注意的是THD,这是名字,一定要对,不然加载不出来数据,这里手动准备了Dt的数据,你也可以从数据库中直接查询返回需要的DataTable

 //金额小写
 DataTable Dt = new DataTable();
 Dt.Columns.Add("分", typeof(string));
 Dt.Columns.Add("角", typeof(string));
 Dt.Columns.Add("元", typeof(string));
 Dt.Columns.Add("拾", typeof(string));
 Dt.Columns.Add("佰", typeof(string));
 Dt.Columns.Add("仟", typeof(string));
 Dt.Columns.Add("万", typeof(string));
 Dt.Columns.Add("十万", typeof(string));
 Dt.Columns.Add("百万", typeof(string));
 Dt.Columns.Add("仟万", typeof(string));
 Dt.Columns.Add("亿", typeof(string));
 Dt.Rows.Add(s_num[0], s_num[1], s_num[2], s_num[3], s_num[4], s_num[5], s_num[6], s_num[7], s_num[8], s_num[9], s_num[10]);
  DataSet ds = new DataSet();
  Dt.TableName = "THD";
  ds.Tables.Add(Dt.Copy());

 rp.RegisterData(ds);
 DataBand band = rp.FindObject("Data1") as DataBand;
 band.DataSource = rp.GetDataSource("THD");

报表的显示

报表的显示分为两种,一种是你在窗体上拖放个报表预览控件,然后把报表显示在里面,这样的好处是你可以控制报表显示的大小,也能控制是否显示工具栏,灵活性好,但是占地方。

rp.Preview = PreView;
rp.Prepare();
rp.ShowPrepared();

运行后报表就显示出来了,这里为了防止用户直接点击工具栏上的打印,就去掉了工具栏。

可以通过预览按钮的返回值来判断用户是点击打印了还是点击取消了,可以用来统计打印次数

var isPrint=PreView.Print();
if (isPrint)
{
    //对打印进行计数
    int bh = Convert.ToInt32(Main.xh);
    try
    {
        fsql.Update<ShouJu>().AsTable("收据_" + Main.szd)
            .Set(a => a.打印次数 + 1)
            .Where(a => a.编号 == bh)
            .ExecuteAffrows();

    }
    catch
    {
    }
}

第二种是不需要有预览的控件,直接让报表显示自带的预览界面,但那个预览界面大小无法控制,也无法控制用户是否进行了打印。

 if (rp.Prepare())
 {  
    //准备报表
    rp.ShowPrepared();  //显示报表
    this.Activate();   //关闭预览窗口后软件界面激活
}

会直接显示一个预览的界面,可打印,可导出,灵活性很大,还有点小bug,就是关闭那个界面后你的软件会跑到其他软件的后面去。

这个界面比较大,默认出来是全屏的,需要手动缩小一下。

好了,希望看了后对你有所帮助~

相关推荐

用户界面干货盘点

为了解决大家找资源难的问题,EVGET特别开辟每周盘点用户界面干货的专栏,一网打尽热门的界面资讯、Demo示例、版本升级及下载、移动Web开发,以及各种UI神器推荐。更多资源及工具也可以在用户界面专题...

不仅仅是创意,26款科技小玩意

新科技不断在卖场出现,总是吸引着消费者的眼球。许多很棒的科技小玩意儿被发明,手机、平板、手提电脑、游戏主机、甚至是3D打印都适用。现在的初创公司已经发正在让21世纪打破各种科技壁垒障碍。本文收集26...

FastReport.Net报表设计器如何连接到SQLCe

MicrosoftSQLServerCompactEdition是一个简单的本地关系数据库,不需要安装,并且已与数据库文件建立连接。您不需要管理员权限即可使用基础功能。您也只能“密码”基础功能...

2015年最值得关注的8款用户界面新品

软件界面开发解决方案这一块一直以来是慧都控件(EVGET)的强项,我们有400多款用户界面产品,250多款图表报表产品,此外还提供专业的软件界面定制开发服务,其中DevExpress定制开发、甘特图定...

小贴士:安装TBarCode office的注意事项和相关资源

TBarCodeoffice是一款适用于MicrosoftWord2007、2010等版本,具有强大功能的条码插件。在这里我们介绍一下安装TBarCodeoffice的注意事项和相关资源。安装...

初学者不容错过的修复Bug小技巧

Bug的发生,我想这是每个开发人员几乎每天都要面对的问题,包括历史上非常有名的编程人员,他们依旧要面对Bug。成为一个熟练的程序员并不意味着永远不会犯错误,而是擅于发现错误并能很好地修正错误。当你刚开...

【推荐】一款基于 .NET 开源的支持多厂区、多项目级的MOM/MES系统

如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!项目介绍tmom是一款基于.NET开源、通用的生产制造系统,支持多厂区/多项目级的MOM/MES系统,计划排程...

你不可不知的10个Github功能

Github让全世界的开发人员、设计人员可以在一起工作交流。Github不仅提供大量开源项目、编程语言代码,他也发布过Windows和OSX桌面应用,可以让我们在工作中无缝集成Github。...

Fastreport.Net用户手册(十四):文本编辑

编辑对象的文本,只需双击文本内容,然后会弹出一个文本编辑器。在编辑器右方有一个可以添加至文本中的数据树组件。可以通过鼠标拖拽该组件到需要的地方。在文本中嵌入该组件的另一个方法是双击该组件,然后该组件将...

火狐浏览器开发者专版上手体验

当Mozilla宣布FirefoxDeveloperEdition,我想不少开发者都很高兴,因为第一个大型开发者专用浏览器诞生了。既然是开发者专用版,那么和普通版本肯定是不一样的。早已经迫不及待...

FastReport.Net 2015.3.3 优化了报表解析器

FastReport.Net2015.3.3于近日正式发布。点击FastReport.Net2015.3.3下载试用FastReport.Net最新版本。[Core][Exports]重写保存在...

改变上网体验:10个超赞的Google Chrome扩展

你使用谷歌浏览器浏览网页吗?其实,全世界数以百万的用户都喜欢使用GoogleChrome浏览网页,这也促使其成为全球使用量第二大的Web浏览器。GoogleChrome浏览器具有快速、干净的页面,...

如何在 FastReport Online Designer 中处理报表的 5 个函数

FastReports产品的时代并没有停滞不前。每个月都会添加新的函数和对象,并改进和优化当前的代码。FastReportOnlineDesigner...

Winform应用界面开发技术特点图解

整理一下自己之前的Winform开发要点,以图文的方式展示一些关键性的技术特点,总结一下。...

跨平台的可视化Web报表设计器-FastReport Online Designer

好消息!FastReportOnlineDesigner现在作为一个独立的应用程序发布啦!此前作为FastReport.Net的专业版的一部分的在线设计测试版,现在可以单独或作为FastRepor...