简单报表程序概要
我设计中的报表设计模块主要有以下几个部分组成:
0、相关服务提供上下文。主要通过AppContext类实现报表模块中各个相关组件的拼装动作:
A、系统服务实现实例的注入动作;
B、外围具体功能实现的提供(数据存储实现、报表设计实现、报表输出实现);
C、模块功能的扩展,主要是插件的挂接。
1、报表元素的定义[Base包]和转换[RDConvert](基础信息)用于对报表中各个元素相的定义,报表信息在内存中的组织结构(报表树)。
报表元素(IReportItem)的属性有以下部分组成:
A、字体属性组Font
字体、字号、粗斜、下划线等等
B、颜色属性组Color
前景色、背景色、背景图像
C、位置大小属性组LocationAndSize
四点坐标
D、元素边框属性组Border
边框线的风格、边框空白、边框线的颜色
E、数据来源属性组DataSource
F、元素动作属性组Action
G、数据显示样式TextStyle
数据类型、显示格式、对齐方式、0是否显示、折行显示、颜色控制
报表定义结构树管理,一个报表中的所有定义元素是以树形方式进行组织管理的,如以下结构
树根[IReport]---报表的信息描述[ReportInfoset]
|
| 报表头[IReportItem]
| |
| | 报表项[IReportItem]
|
| 报表体[IReport]
| |
| | 报表项[IReportItem]
|
| 报表尾[IReport]
| |
| | 报表项[IReportItem]
2、报表定义的存储[Persist包]实现。通过接口依赖的方式,提供具体的报表存储实现:本地XML文件、Web服务器资源、中心数据库共享、等等。在系统的核心部分是不知道存储服务是哪种具体实现方式。在使用Persist功能时,会向报表模块的应用上下文(APPConText)实例(该实例是唯一可以被各个实现类所依赖的)请求实例:T AppContext.GetObject<T>()。
3、报表设计器实现[GUI包]。提供一个运行时的设计器,由于报表格式的设计,设计器界面是典型的VS2005风格,提供
A、设计编辑器[ReportEditor]
B、预览视图[ReportPreviewView]
C、报表元素工具箱[ReportItemToolBox]
D、报表元素属性面板[ReportPropertyGrid]
E、报表数据源定义面板[ReportDataSourcePad]、等等部件。
报表设计的方式有以下三种:
A、向导设计方式
B、模板设计方式
C、自定义设计方式
4、报表输出实现[Layout包]。依据设计的报表信息和提供的数据对象,或者数据来源描述(SQL语句、本地文件路径、Web数据发布URL),实现报表的展现动作,具体的展现部分有AppContext上下文提供ILayout接口实现,可以提供的方式有:VSPrintDocment、水晶报表、DevExpress报表组件、等等。通过设定的打印参数,把报表输出到打印机中。
5、打印调度管理。对打印机参数和报表执行参数的管理,通过配置生成后台打印调用计划,在无人职守的方式下定时自动打印报表。
前期主要实现的:
1、报表元素的定义和描述部分(暂时实现标签、文本框、线条、列表、图像等元素),
2、报表定义信息的数据库存储,
3、报表数据源的读取(从DataSet中读取数据进行报表的填充),
4、简单设计器的实现(主要模仿VS2005中的报表设计器,当然能够在模块中直接使用VS2005的报表设计器也可)。
5、设计预览功能。
5、打印输出及打印参数设定。
工作量估算:
1、报表元素定义:3人日;
2、数据库存储:2人日;
3、报表数据读取:3人日;
4、设计器:8人日;
5、预览和输出:4人日;
浙公网安备 33010602011771号