常规的报表设计,如RDLC、水晶报表等,需要安装Visual Studio,通过VS提供的报表设计界面来设计报表,通过VS设计报表对.NET开发者而言非常方便,但是对于非开发人员,要安装4G的一个VS,且需要一个License,则成本显得有点高。本文提供另外一种方法,不使用VS也可以设计报表。

通过ActiveReports提供的免费报表设计器(绿色的exe可执行文件),我们也可以设计报表,下面就开始报表设计:

谁适合阅读此文?

  • 报表设计师
  • 产品经理
  • 需求分析师

必要的环境

  • 安装了.NET Framework 4.0环境
  • MS Office Access 2007及以上版本

第1分钟:认识报表设计器

双击“GrapeCity.ActiveReports.Samples.EndUserDesigner.exe”,可打开如下的报表设计界面

整体风格和Visual Studio,非常方便上手,尤其熟悉Visual Stuido界面。

本文采用区域报表来实现。

在区域报表中,提供了14个报表控件,其中本文会用到6种控件:(有关区域报表、页面报表的区别,请参考)

  • Label: 标签用于显示说明性文本,可以帮助用户描述显示在报表中的数据。
  • TextBox :文本框是一个基本的报表控件,它允许直接显示和编辑未格式化的文本。
  • Picture:此控件用于在报表中显示图像文件,可以控制图像大小等属性。
  • Line: 线以可视方式绘制边界或突出显示报表中特定的区域。
  • ReportInfo:ReportInfo 控件允许您快速显示页码、页数和报表日期等信息。
  • Barcode:条形码是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符。

第2钟:配置数据源和布局

下面这张图是区域报表的数据映射说明,其中对应关系:数据库中一条记录对应报表的Detail一条信息。

了解了数据映射关系后,我们开始进行报表设计,首先配置数据源,我们这里提供了Access关系型数据库(下载地址在本文最下面)。

通过点击报表设计器的Detail区域的数据库图标

可打开如下的数据源视图:

配置完数据源后,选择DataSource1,右键添加数据集,即通过一条SQL语句,则可获得一个DataTable类似的数据集对象。

本博客使用的完整的SQL如下,数据源可通过这个路径下载 (下载附件后,解压文件,获得NWind_CHS_Small.mdb文件)

SELECT   产品.产品ID, 产品.产品名称, 产品.供应商ID, 产品.类别ID, 产品.单位数量, 产品.单价, 产品.库存量, 产品.订购量,
                产品.再订购量, 产品.中止, 产品.图片, 产品.产品描述, 类别.类别名称, 类别.说明 AS 类别说明, 类别.图片 AS 类别图片,
                供应商.公司名称 AS 供应商, 供应商.联系人姓名, 供应商.城市, 供应商.地址
FROM      ((供应商 INNER JOIN
                产品 ON 供应商.供应商ID = 产品.供应商ID) INNER JOIN
                类别 ON 产品.类别ID = 类别.类别ID)
ORDER BY 供应商.供应商ID, 产品.类别ID DESC

自此,数据源配置已经完成,完成了报表设计的入门,下面开始明确报表设计需求。

第3分钟:报表设计需求

  • 我们希望报表呈现的结果是类似下面的布局,报表头、报表数据详情、报表尾,即整体风格和RDLC报表类似
  • 同时,还可呈现二维码、图片展现格式、报表生成时间、报表页面等信息。
  • 考虑到将来系统迁移的最低成本,我们希望可以在Winform、WPF、ASP.NET、HTML5等平台中能够最低成本的复用---一次性精心设计的报表。

第4分钟:拖动报表控件设计报表

在报表设计器的底部增加了多个设计器按钮,通过这些按钮可以快速的访问布局向导,为报表模板设计带来更多便利操作。

自动对齐线(Snap Lines):在报表设计界面上拖动某个控件,当该控件与其它控件(或者报表某个区域的边界)对齐时,被拖动控件和与之对齐的控件(或者报表某个区域的边界)之间将出现自动对齐线,让用户自由地布局控件变得更加容易。

自动网格对齐(Snap to Grid):在报表设计界面上拖动某个控件,该控件将自动和与之最近的网格线进行对齐,该功能可以根据设置开启或者关闭。

类似于Excel的自动滚动功能(Excel-like auto scrolling):在报表设计界面上拖动某个控件,当拖动的区域超出了设计界面当前显示的范围时,设计界面会根据您拖动方向进行自动移动,直到报表设计界面的边缘。

平移模式(Pan Mode):当切换到平移模式时会显示一个手形的光标,按下鼠标左键就可以自由拖动报表的设计界面。

自动尺寸线(Dimension lines):在报表设计界面上拖动控件、改变控件大小操作时,控件边缘会自动出现尺寸线,通过尺寸线可以清楚的知道控件与报表边界之间的距离。

报表控件对话框(Report Control Dialogs):提供简便的方法来设置报表控件的相关属性。

区域报表布局默认情况下显示三个区域: 页眉、明细和页脚。您可以添加或删除页眉和页脚,报表头和报表尾,还可以添加 32 级的分组页眉和页脚(在报表上单击右键并选择插入,可以插入报表头/报表尾和分组头/分组尾。)。将控件拖这些区域中,以此来显示报表数据。报表布局会被保存为 RPX 格式。

依次从数据字段,往报表上拖动字段,如供应商名称、联系人、地址、城市等

对于Line、BarCode和Picture,则需要从左侧的工具栏拖入。

其中BarCode和Picture需要在属性对话框修改数据---DataField字段。

第5分钟:预览结果、打印、导出

预览查看报表结果的效果如下

导出:在设计工具中,通过文件---Export--可导出多种文件格式(HTML、PDF、Excel等)。

打印功能,通过工具栏的打印按钮直接打印

怎么样,是否有想动手设计报表的冲动?

绿色报表设计工具(解压即可使用,含C#源码)

数据库下载地址(下载附件后,解压文件,获得NWind_CHS_Small.mdb文件)

在线参考文档

另外,对这款绿色的报表设计器提供源码,可供您和您的小伙伴再次定制,如添加公司logo等个性化需求。(源码编译则需要安装ActiveReports安装授权)

本文用的是C#.NET绿色版,如有需要VB.NET绿色设计器源码的,请留言告之您的邮箱,单独发给您。

相关阅读:

【推荐】中铁、中石油等大型企业的复杂报表解决方案

ActiveReports11 SP1 新特性

ActiveReports11 新特性

不用Visual Studio,5分钟轻松实现一张报表的更多相关文章

  1. 【Lua学习笔记之:Lua环境搭建 Windows 不用 visual studio】

    Lua 环境搭建 Windows 不用 visual studio 系统环境:Win7 64bit 联系方式:yexiaopeng1992@126.com 前言: 最近需要学习Unity3d游戏中的热 ...

  2. 在 Visual Studio 2010 中开发和部署 Windows Azure 应用程序

    原文 在 Visual Studio 2010 中开发和部署 Windows Azure 应用程序 在 Visual Studio 2010 中开发和部署 Windows Azure 应用程序 Jim ...

  3. 修改VISUAL STUDIO EXPRESS 2012新建C++文件编码

    本站文章除注明转载外,均为本站原创或者翻译. 本站文章欢迎各种形式的转载,但请18岁以上的转载者注明文章出处,尊重我的劳动,也尊重你的智商: 本站部分原创和翻译文章提供markdown格式源码,欢迎使 ...

  4. What's news in Visual Studio 2017

    文字总结: 1.高级智能提示  在属性列表中输入 M C即可查询属性中包含字母m\c的属性 2.更快的导航查询,在Go To All中输入任意查询的字符,可快速查到任何包含关键字的文件 3.代码智能分 ...

  5. Visual Studio 2017 and Apache Cordova mobile apps | Andrés Zsögön

    原文:Visual Studio 2017 and Apache Cordova mobile apps | Andrés Zsögön 以下是使用Microsoft Visual Studio 20 ...

  6. 带你使用Visual Studio 2019创建一个MVC Web应用

    工欲善其事必先利其器,我们既然有Visual Studio2019这样的IDE为什么不用?学.Net Core而不用Visual Studio进行开发可谓是多么另类呀!既然你已经安装了VS2019的话 ...

  7. 让编程更轻松的 7 个 Visual Studio 扩展 : 以下几个扩展,BuildVision可以用

    是时候升级你最喜欢的IDE了!在这篇文章中,我将介绍一些我最喜欢的与众不同的 Visual Studio 扩展,是它们让我的日常编程工作变得更加轻松.对于一些明摆着的,例如 ReSharper 和 O ...

  8. MySql轻松入门系列——第二站 使用visual studio 对mysql进行源码级调试

    一:背景 1. 讲故事 上一篇说了mysql的架构图,很多同学反馈说不过瘾,毕竟还是听我讲故事,那这篇就来说一说怎么利用visual studio 对 mysql进行源码级调试,毕竟源码面前,不谈隐私 ...

  9. 1 分钟上手,在容器中运行 Visual Studio Code

    https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers 这个插件允许我们在容器中运 ...

随机推荐

  1. WebRTC 学习之 概念总结

    在学习WebRTC的时候,接触到了好多新的概念,在这里做一下备忘吧 RTMP协议 Real Time Messaging Protocol(实时消息传输协议).该协议基于TCP,是一个协议族,包括RT ...

  2. H5拖动火狐自动打开新标签

    写在前面的话:<H5拖动火狐自动打开新标签>原因是为什么百度很多了我就不细说,本文章只说我自己的解决方法... 自定义数据里写个链接,如果火狐自动打开就跳到这个链接 这个页面就写一句话:关 ...

  3. 为什么(2.55).toFixed(1)等于2.5?

    上次遇到了一个奇怪的问题:JS的(2.55).toFixed(1)输出是2.5,而不是四舍五入的2.6,这是为什么呢? 进一步观察: 发现,并不是所有的都不正常,1.55的四舍五入还是对的,为什么2. ...

  4. hdu 6086 -- Rikka with String(AC自动机 + 状压DP)

    题目链接 Problem Description As we know, Rikka is poor at math. Yuta is worrying about this situation, s ...

  5. python之装饰器(decorator)

    python的装饰器如果用得好,那是大神,用的不好最好别用... 装饰器(decorator)主要包含俩大属性: 1.不能改变原有函数的调用方式 2.不能改变原有函数的代码 第一个表示,我不需要改变原 ...

  6. ABP实践(3)-ASP.NET Core 2.x版本(从创建实体到输出api)简单实现商品列表及增删改

    项目基于前两篇文章. 本章创建一个简单版的商品管理后台api,用到EF Core用code fist迁移数据创建数据库. 创建Goods实体 在领域层xxx.Core项目[新建文件夹Goods;文件夹 ...

  7. vue 父子组件之间传参

    父组件中有子组件 msg 为父组件向子组件传的内容,  子组件向父组件传参数 子组件:this.$emit("shownumber",[this.num]);//this.$emi ...

  8. Django内置权限扩展案例

    当Django的内置权限无法满足需求的时候就自己扩展吧~ 背景介绍 overmind项目使用了Django内置的权限系统,Django内置权限系统基于model层做控制,新的model创建后会默认新建 ...

  9. zabbix 监控基础

    一.监控系统基础概念 1.监控系统的工作内容 数据采集 --> 数据存储 --> 数据展示 --> 报警 传感器    时间序列数据    趋势图  采集到的数据超出阈(yu)值 2 ...

  10. 进程间通信IPC-管道

    管道是UNIX系统IPC的最古老的形式,所有的UNIX系统都提供此通讯机制.管道有以下两种局限性: 1, 历史上,它们是半双工的(即数据只能在一个方向上流动).现在某些系统提供了全双工管道,但是为了最 ...