C# FastReport 制作报表

1 篇文章 0 订阅
1 篇文章 0 订阅

之前接触过一次使用 FastReport 制作报表。

下面,我就说明一下,如何实现。

工具网站:

1、试试吧| 图片转base64编码网站icon-default.png?t=N7T8https://try8.cn/tool/image/base642、docsmall | 图片压缩工具网站icon-default.png?t=N7T8https://docsmall.com/image-compress

1、FastReport 

① 打开FastReport 软件,然后新建项目,建完后如下图所示。

② 先选择 右侧 Actions 保存一个字典到,方便写数据格式。

Actions --> Save Dictionary

③打开保存的文件 Dictionary.frd(名称默认),里面内容默认是这样的,然后手动补充内容。

示例: ReferenceName 属性必须要加

代码:

<?xml version="1.0" encoding="utf-8"?>
<Dictionary>
  <TableDataSource Name="baseInfo" ReferenceName="Data.baseInfo" DataType="System.String" Enabled="true">
    <Column Name="patName" DataType="System.String"/>
	<Column Name="patSex" DataType="System.String"/>
	<Column Name="patAge" DataType="System.String"/>
	<Column Name="inCode" DataType="System.String"/>
	<Column Name="outCode" DataType="System.String"/>
	<Column Name="imageCode" DataType="System.String"/>
	<Column Name="regId" DataType="System.String"/>
	<Column Name="deptName" DataType="System.String"/>
	<Column Name="bedName" DataType="System.String"/>
	<Column Name="checkItem" DataType="System.String"/>
	<Column Name="imageDecribe" DataType="System.String"/>
	<Column Name="imageDiagnose" DataType="System.String"/>
	<Column Name="suggest" DataType="System.String"/>
	<Column Name="checkDoctor" DataType="System.String"/>
	<Column Name="reportDoctor" DataType="System.String"/>
	<Column Name="memo1" DataType="System.String"/>
	<Column Name="memo2" DataType="System.String"/>
	<Column Name="memo3" DataType="System.String"/>
	<Column Name="memo4" DataType="System.String"/>
	<Column Name="memo5" DataType="System.String"/>
  </TableDataSource>
</Dictionary>

④打开FastReport软件,进行导入字典。

Actions --> Open Dictionary

导入后,就出现刚才定义的表名。

⑤ 然后就按照自己的想法,拖字段布局了。

如果涉及到图片,就直接把图片控件放到相应的位置,然后下面补充了如何去实现数据绑定。

补充:图片怎么配置,能让其显示

双击,就会自动转到代码区。填写以下代码:

    private void Picture2_BeforePrint(object sender, EventArgs e)
    {
      string imgStr = (string)Report.GetParameterValue("imageCheck");
      if (string.IsNullOrEmpty(imgStr))
      {
        Picture2.Visible=false;
        return;
      }
      byte[] imgData=Convert.FromBase64String(imgStr);
      MemoryStream ms = new MemoryStream(imgData);
      Image img = System.Drawing.Image.FromStream(ms);
      Picture2.Image=img;
    }

图片,在代码区,一定一定一定要检查有没有引用:。不加这个,就会报错,提示:

Error CS0246: 未能找到类型或命名空间名称“MemoryStream”(是否缺少 using 指令或程序集引用?)

在数据库里面,图片数据是以 base64编码,存储的。以下面为例,在C# 中,只需要把 imgBaseInfo 传进去就可以。请联合文末最后代码查看。

 string baseChkString = "数据库里面的base64编码";
            // 报表传输base64即可
 string imgBaseInfo= baseChkString.Replace("data:image/png;base64,", "").Replace("data:image/jgp;base64,", "").Replace("data:image/jpg;base64,", "").Replace("data:image/jpeg;base64,", "");

⑥ 最后效果展示

以上就是报表部分全部完成了,接下来就是在程序里面如何去调用。

2、C#  WinForm

①在项目中引入这3个dll文件 + Aspose.PDF

②引入控件

工具箱 --> 添加选项卡(aaa) -->选择项-->浏览(选择FastReport.dll)-->确定

然后找到这个控件:,放到窗体里面。如下图所示:

③创建文件夹

在项目Debug 文件下,新建一个文件夹,里面放那个报表模板文件( 扩展名 .frx

④编写代码

   public void test(BaseInfo baseInfoEntity)
        {
            // 创建数据表,定义报表字段
            DataSet data = new DataSet();
            DataTable dtt = new DataTable();//创建表
            dtt.TableName = "baseInfo";
            dtt.Columns.Add("patName", typeof(String));//添加列
            dtt.Columns.Add("patSex", typeof(String));//添加列
            dtt.Columns.Add("patAge", typeof(String));
            dtt.Columns.Add("inCode", typeof(String));
            dtt.Columns.Add("outCode", typeof(String));
            dtt.Columns.Add("imageCode", typeof(String));
            dtt.Columns.Add("regId", typeof(String));
            dtt.Columns.Add("deptName", typeof(String));
            dtt.Columns.Add("bedName", typeof(String));
            dtt.Columns.Add("checkItem", typeof(String));
            dtt.Columns.Add("imageDecribe", typeof(String));
            dtt.Columns.Add("imageDiagnose", typeof(String));
            dtt.Columns.Add("suggest", typeof(String));
            dtt.Columns.Add("memo1", typeof(String));

            dtt.Rows.Add(new object[] { baseInfoEntity.patName,
                                        baseInfoEntity.patSex,
                                        baseInfoEntity.patAge,
                                        baseInfoEntity.inCode,
                                        baseInfoEntity.outCode,
                                        baseInfoEntity.imageCode,
                                        baseInfoEntity.regId,
                                        baseInfoEntity.deptName,
                                        baseInfoEntity.bedName,
                                        baseInfoEntity.checkItem,
                                        baseInfoEntity.imageDecribe,
                                        baseInfoEntity.imageDiagnose,
                                        baseInfoEntity.suggest,
                                        baseInfoEntity.memo1
            });//添加行 

            //DataView dv = dt.DefaultView;//获取表视图
            data.Tables.Add(dtt);
            //string baseString = textBox1.Text.ToString();
            try
            {
                FastReport.Report report = new FastReport.Report();

                // 检索 Debug\report\Untitled.frx 文件
                string filename = @"report\Untitled.frx";// Untitled.frx

                report.Load(filename);
                report.Preview = this.previewControl1;//让报表显示在窗体的控件中

                // 其他数据:data 
                report.RegisterData(data);

                // 图片数据:这个名称,写报表模板里面,自己定义的名称。
                report.SetParameterValue("imageMake", baseInfoEntity.checkDoctor);// 生成显示图片
                report.SetParameterValue("imageCheck", baseInfoEntity.reportDoctor);// 生成显示图片
                report.SetParameterValue("imageIcon", baseInfoEntity.memo2);// 生成显示图片

                report.Prepare();
                report.ShowPrepared();
            }
            catch (Exception err)
            {
                MessageBox.Show(err.Message);
            }
        }

最后,效果如图所示:

如有不足,还请多多包涵,希望可以帮助到别人 😊。

  • 23
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值