润乾报表使用EXCEL数据源的方法及改进

合集下载

Excel图表数据源的调整与优化

Excel图表数据源的调整与优化

Excel图表数据源的调整与优化在Excel中,图表作为数据分析和呈现的重要工具,能够直观有效地展示数据关系。

不同的图表有不同的应用场景,而优化与调整数据源则是提升图表效果的关键环节。

本文将详细探讨如何在Excel中调整与优化图表的数据源,使其更加生动和易于理解。

确定合适的数据范围在创建图表时,数据范围的选择至关重要。

当选择的数据过多或过少时,图表可能无法准确反映出所需的信息。

确保所选数据范围与图表所要展示的内容相匹配。

例如,对于时间序列数据,确保选择的列中包含时间标记及其对应的数值。

在选择数据范围时,还可以使用Excel的“名称管理器”功能,为数据动态命名。

这可以在数据源更新时,图表会自动根据新数据进行调整,大大提升灵活性。

有效利用数据透视表数据透视表是一种强大的功能,可以将复杂的数据整理成易于理解的形式。

通过将原始数据汇总、分类后,再根据汇总的数据生成图表,这样不仅能使数据分析更加清晰,也能避免常规图表因数据量庞大而导致的混乱。

创建数据透视表后,可以直接从数据透视表中插入相关图表。

这样生成的图表会随数据透视表的调整而动态更新,反映数据的最新状态。

优化图表类型每种图表类型适用于不同的数据表现,因此在调整数据源时,有必要考虑最合适的图表类型。

例如,柱状图适用于对比各个类别的数据,而折线图更适合展示趋势变化。

选择合适的图表类型,能够使数据展示更加生动和自然。

在图表中,Excel提供了多种视觉选项,如区域图、饼图等。

结合数据源的特点,合理选择和切换图表类型,能够有效提升数据的可读性及视觉吸引力。

添加辅助元素除了选择合适的图表类型之外,增加辅助元素也能提升图表的信息传达能力。

例如,可以添加数据标签、趋势线、参考线等。

数据标签可以清晰地展示每个数据点的具体值,而趋势线便于识别数据出现的规律或趋势。

图表的标题、图例和轴标题等元素也不容忽视。

合理的命名和标注能够引导观众迅速理解图表核心信息,增强图表的表达效果。

(完整版)润乾报表使用手册

(完整版)润乾报表使用手册

报表使用手册报表使用手册XX股份有限公司中国济南目录1概述.............................................................................................................................. - 3 - 2安装.............................................................................................................................. - 3 -2.1准备好安装程序.......................................................................................... - 3 -2.2安装中的选项.............................................................................................. - 3 -2.3授权文件配置.............................................................................................. - 4 - 3报表制作...................................................................................................................... - 5 -3.1报表制作要求.............................................................................................. - 5 -3.2制作一张报表的步骤.................................................................................. - 5 -3.3启动报表设计器.......................................................................................... - 6 -3.4连接数据源.................................................................................................. - 7 -3.4.1 数据源对话框......................................................................................... - 7 -3.4.2 编辑数据源............................................................................................. - 7 -3.4.3 注意事项................................................................................................. - 9 -3.5设计报表格式.............................................................................................. - 9 -3.5.1 格式设计................................................................................................. - 9 -3.5.2 需注意事项........................................................................................... - 10 -3.6定义参数.................................................................................................... - 10 -3.6.1 参数的编辑........................................................................................... - 10 -3.6.2 常用参数举例....................................................................................... - 11 -3.7定义宏........................................................................................................ - 11 -3.7.1 宏的编辑............................................................................................... - 11 -3.7.2 常用宏举例........................................................................................... - 12 -3.8建立数据集................................................................................................ - 12 -3.8.1 数据集的编辑....................................................................................... - 12 -3.8.2 常用数据集举例................................................................................... - 13 -3.9设置单元格属性........................................................................................ - 14 -3.9.1 数据集在单元格中应用....................................................................... - 14 -3.9.2 显示格式............................................................................................... - 14 -3.9.3 设置预警条件....................................................................................... - 15 -3.9.4 增加动态背景色................................................................................... - 15 -3.9.5 按参数隐藏列....................................................................................... - 16 -3.9.6 主格应用............................................................................................... - 16 -3.10报表预览.................................................................................................... - 16 -3.11报表发布.................................................................................................... - 17 - 4报表部署.................................................................................................................... - 18 -4.1部署位置.................................................................................................... - 18 -4.2Web中显示................................................................................................ - 18 - 5重要概念.................................................................................................................... - 19 -5.1数据源........................................................................................................ - 19 -5.2数据集........................................................................................................ - 19 -5.3参数............................................................................................................ - 19 -5.4宏定义........................................................................................................ - 20 -5.5单元格........................................................................................................ - 21 -5.6主格............................................................................................................ - 21 - 6常用函数.................................................................................................................... - 23 -6.1数据集函数................................................................................................ - 23 -6.1.1 select() .................................................................................................... - 23 -6.1.2 select1() .................................................................................................. - 23 -6.1.3 count() .................................................................................................... - 24 -6.2单元格函数................................................................................................ - 24 -6.2.1 if() ........................................................................................................... - 24 -6.2.2 row() ....................................................................................................... - 24 -6.2.3 value() .................................................................................................... - 24 -6.3字符串函数................................................................................................ - 24 -6.3.1 pos() ....................................................................................................... - 24 -6.3.2 mid() ....................................................................................................... - 24 -6.4数据类型转换函数.................................................................................... - 24 -6.4.1 dateTime() .............................................................................................. - 24 -6.4.2 str() ......................................................................................................... - 24 -1概述该文档主要满足iES-E200电量采集系统中自定义报表制作编写。

润乾报表

润乾报表

支持方案

J2EE机制的WEB应用 .NET及其它机制的WEB应用 Windows下的图形化程序 UNIX下的字符终端程序 Java Application/Applet

J2EE集成


无独立服务器,作为应用服务器上的应 用或JAR包提交,可与应用程序无缝结合, 达到最高运行效率 可共享应用服务器连接池管理 可利用应用服务器集群能力 统一部署

自由式行式混合填报
填报的格子属性可以 是直接填写的数据, 也可以是下拉数据库 中的字典表。

点中需要填写的格子,格子为选中 状态,可以进行数据的填写。
资产负债表中有大量自动计算和合 法性检查关系

单元格属性 统计图 输出格式 打印控制



HTML APPLET EXCEL/PDF
细节考虑非常周到,远比传统工具内容丰富

单元格属性



常见的显示格式,如浮点数、串、日期时间等 代码值与显示值映射,支持固定枚举、数据字 典表对应 支持属性表达式,可根据单元格数据决定,如 颜色、内容等 单元格中斜线 固定图片与图像字段 单元格超链接

性能分析


报表格数不会太多,性能瓶颈在数据 源相关运算 传统报表的数据库运算

依赖于数据源的运算能力 多表叉乘时复杂库较高O(Nk) 拆成多个简单叉乘 复杂度O(N2)或O(N3)

润乾报表的数据源运算

性能指标很重要,但区分度不强


功能优势

绘制方案 数据统计模型 展现输出 特色填报 其它功能

绘制方案

类EXCEL的网格式 合并格与边框组织报表样式 导入EXCEL表样 底图描绘支持套打

润乾报表基本介绍[技巧]

润乾报表基本介绍[技巧]

润乾报表3.0介绍润乾报表3.0是用于统计报表制作及报表及数据填报的大型企业级工具软件。

产品首次成功解决了报表单元格与关系数据库之间的关联规律性,特别适合于中国式报表的填报和统计。

一、产品优势1.绘制方便润乾报表采用类EXCEL的绘制方式,真正做到所见即所得,把程序员从繁重且无聊的报表格式设置工作中解脱出来,极大的提高的表格绘制的方便度和效率,产品特有的EXCEL导入功能(包括格式)可充分利用业务人员原有积累。

2.数据模型先进润乾报表独创的数据模型首次成功地解决了中国报表中单元格与数据字段之间的弱关联性,彻底打破传统行式报表方案,报表行列完全对称,特有的层次扩展机制使多层分组及交叉报表制作非常简单,提供针对关联格的跨行跨组运算,很容易计算小计、同期比等数据。

同一报表中支持多个异构的数据源,允许报表各片之间无关,可用多个简单的数据集成组合出复杂报表,程序员无须再为每张报表编程(脚本或存储过程)或写复杂SQL准备数据。

3.输出能力丰富润乾报表每个单元格属性均提供条件控制,如颜色、行高、是否可见等均可与格内数据相关;支持代码显示值对应、多种数据格式、图片文件和图片字段的处理。

产品提供十几种各类统计图,支持PNG/GIF/JPG三种格式。

每张报表均可生成HTML、EXCEL、PDF三种输出格式(输出结果完全不失真,包括其内的统计图)。

单元格与统计图例均可加带参数的链接从而实现数据钻取功能,多层报表可在线收缩展开。

4.打印控制强大润乾报表提供强大的打印控制功能,按行数和纸张大小分页分栏或强制分页,表头自动重复(包括左表头),允许一张纸上打多个报表,提供末页补足空行。

可采用像素和毫米两种计量单位,独创的底图描绘功能以支持套打;5.集成性好润乾报表采用纯JAVA开发,利用服务器端提供丰富的API调用和标记可完全无缝地嵌入到基于J2EE的应用程序中(可看作应用程序员自己写的代码),程序员可更换报表的数据库连接和数据源、采用应用服务器的连接池管理;设计器也提供外置的数据源和数据字典定义,可由应用程序员提供这些信息。

Excel的个数据表数据源设置技巧让你的数据分析更加便捷

Excel的个数据表数据源设置技巧让你的数据分析更加便捷

Excel的个数据表数据源设置技巧让你的数据分析更加便捷Excel的数据表数据源设置技巧让你的数据分析更加便捷Excel是一款广泛应用于数据分析和管理的电子表格软件,拥有强大的数据处理和分析功能。

在Excel中,数据源的设置对于数据分析的准确性和便捷性至关重要。

本文将介绍一些Excel数据表数据源设置的技巧,帮助你更好地进行数据分析。

一、数据源的选择1. 本地数据源:通过Excel文件导入的数据作为数据源。

可以直接在Excel中选择要导入的数据表,或者通过连接数据库来选择数据表。

本地数据源是最常见的数据源类型,适用于大部分数据分析需求。

2. 外部数据源:通过连接外部数据源来获取数据。

可以连接各种数据库、Web数据等。

通过外部数据源可以获取实时的数据,并且可以设置自动更新数据的功能。

二、数据源的导入和编辑1. 导入数据表:在Excel中选择“数据”选项卡,点击“从文本”、“从数据库”、“从Web”等选项,按照向导进行数据导入操作。

可以选择导入整个数据表或者指定数据范围。

2. 编辑数据源:在Excel中选择“数据”选项卡,点击“编辑查询”、“编辑链接”、“编辑数据模型”等选项,对已导入的数据源进行编辑。

可以对数据进行筛选、排序、增删列等操作,以满足数据分析的需求。

三、数据源的筛选和排序1. 筛选数据:在Excel数据表中,可以使用“筛选”功能对数据进行条件筛选。

选择需要筛选的数据范围,点击“数据”选项卡上的“筛选”按钮,设置筛选条件,即可筛选出符合条件的数据。

2. 排序数据:在Excel数据表中,可以使用“排序”功能对数据进行排序。

选择需要排序的数据范围,点击“数据”选项卡上的“排序”按钮,设置排序规则,即可按照指定的列进行升序或降序排序。

四、数据源的透视表和图表1. 透视表:透视表是Excel中用于数据汇总和分析的强大工具。

通过透视表可以将原始数据按照不同的维度进行分类和汇总,快速生成各种数据报表。

润乾集算报表应用开发之Excel及PDF导出

润乾集算报表应用开发之Excel及PDF导出
定义导出 Excel 的 servlet(ExportToExcel),主要代码如下: 1、接收参数 String report = request.getParameter("rpx"); String year = request.getParameter("year");
2、读入报表 String reportFile = request.getSession().getServletContext().getRealPath("/reportFiles/" +report);
public class ExportToExcel extends HttpServlet {
/** * Constructor of the object. */
public ExportToExcel() { super();
}
/** * Destruction of the servlet. <br> */
}
/** * The doPost method of the servlet. <br> * * This method is called when a form has its tag value method equals
to post. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */

润乾报表使用手册

润乾报表使用手册

润乾报表使用手册(总25页) -CAL-FENGHAI.-(YICAI)-Company One1-CAL-本页仅作为文档封面,使用请直接删除报表使用手册XX股份有限公司中国济南目录1 概述..................................................错误!未定义书签。

2 安装..................................................错误!未定义书签。

准备好安装程序................................错误!未定义书签。

安装中的选项..................................错误!未定义书签。

授权文件配置..................................错误!未定义书签。

3 报表制作..............................................错误!未定义书签。

报表制作要求..................................错误!未定义书签。

制作一张报表的步骤............................错误!未定义书签。

启动报表设计器................................错误!未定义书签。

连接数据源....................................错误!未定义书签。

数据源对话框...............................错误!未定义书签。

编辑数据源.................................错误!未定义书签。

注意事项...................................错误!未定义书签。

设计报表格式..................................错误!未定义书签。

格式设计...................................错误!未定义书签。

润乾报表实现组内排序报表及改进

润乾报表实现组内排序报表及改进

润乾报表实现组内排序报表及改进报表开发中经常会遇到需要进行组内排序的报表,如按月份的分组汇总值排序显示,并显示每月销售额前十名的记录。

使用报表工具一般通过隐藏行列辅助可以实现,下面通过实例说明润乾报表的实现过程,以及改进方案。

报表需求根据销售管理系统数据统计客户所在地区的订单总额,地区并按订单总额降序排列,要求每个地区中显示销售额在前五名的销售人员及其订单数量和订单金额,其他人员归入“其他”项中。

报表样式如下:这里应该注意的是地区分组中如果销售人数少于5个则不显示“其他”项(如上图中的西北地区)。

润乾报表实现润乾报表实现主要依靠条件隐藏行实现,根据分组成员数量是否显示“其他”项,报表模板及表达式如下:在润乾报表中,使用ds.group()的多个参数,结合条件判断隐藏行,多种使用方法结合完成了报表开发,可见润乾报表的强大之处。

但是由于要按照分组后汇总的订单金额排序,所以在B3的分组表达式中应用ds1.sum(订单金额)表达式作为ds.group()的参数,对于原始数据量较大的情况下,该表达式效率较低;而且,由于只显示前5名销售,在C3(排名)和D3(其他)中设置了隐藏行表达式,对于分组较多的情况仍然会存在性能问题;另外需要在E3和F3中使用格集过滤表达式计算其他销售人员合计,计算时要带着单元格属性计算,效率仍然不高。

上述提到的问题在传统报表工具中皆是存在的,原因在于数据计算(报表数据源准备)与报表呈现混在一起导致,开发人员不得不再报表中编写较复杂的计算逻辑以完成报表开发,造成报表开发和运行效率都不高。

如果能将两部分分开,势必能提升开发和运行效率。

润乾公司在润乾报表的基础上,推出了可以完全满足复杂报表开发的集算报表,其内置了用于完成报表数据计算(数据源准备)的集算器,从而将数据计算和报表呈现剥离开,进一步梳理了报表开发流程,使得报表开发变得更加清晰。

上述报表需求使用集算报表可以这样完成:集算报表实现编写集算脚本使用集算脚本编辑工具完成计算脚本,并为报表输出计算后结果集:A1:执行sql得到初步汇总订单数据A2:按照地区分组后组内成员按订单金额排序A3-C7:循环A3,取前五名记录,并将超过第五的记录都归入“其他”项,结果写回A3A8:结果按地区总额降序排列后返回给报表报表调用使用集算报表设计器,新建报表,使用“集算器”数据集类型,选择上面编辑好的集算脚本(sort.dfx)报表模板及表达式报表模板中根据集算脚本返回的结果集,分别取得地区分组和销售列表等数据,无需复杂表达式即完成报表开发。

润乾报表使用EXCEL数据源的方法及改进

润乾报表使用EXCEL数据源的方法及改进
报表描述
基金公司将股票信息以每月一个 Excel 存储,命名方式为:stock_yyyyMM.xls。包括每只 股票的股票编码、交易日期和收盘价,现报表参数为起始年月和结束年月,报表按照交易日 排序,展现股票交易记录列表。 Excel 内容如下:
报表格式如下: 股票编码
交易日期
润乾报表实现
收盘价
自定义数据集
7、创建数据集,并根据排序后 List 内容设置数据集数据 // 构造一个数据集ds1,设置列名 DataSet ds1 = new DataSet("ds1"); Stock col = colList.get(0); ds1.addCol(col.getCode()); ds1.addCol(col.getTradingDate()); ds1.addCol(col.getPrice());
List
for (int i = begin; i <= end; i++) { System.out.println(i); if (i % 100 > 0 && i % 100 < 13) { String fileName = "E:\\stock_" + i + ".xls"; System.out.println("Read " + fileName + " startup..."); readExcel(fileName);//读入并解析Excel内容,并将结果存入
4、实现读入 Excel 方法 readExcel(),根据传入 Excel 文件名读入并解析,将文件内容 存入 List
publicstaticvoid readExcel(String fileName) { boolean isE2007 = false; // 判断是否是excel2007格式 if (fileName.endsWith("xlsx")) isE2007 = true; try {

润乾集算报表优化应用结构之混合数据源

润乾集算报表优化应用结构之混合数据源

润乾集算报表优化应用结构之混合数据源在报表项目中,报表源数据常常会来自于多种异构数据源。

例如:关系型数据库(oracle 、db2、mysql ),nosql 数据库(mongodb ),http 数据源,hadoop (hive 、hdfs )甚至是excel 或者文本文件。

通常的做法是采用ETL 工具,将这些数据源都同步到数据仓库中。

但是这样做的问题在于:1、配置复杂,难度较大;2、成本较高;3、数据无法实时访问,需要有较长时间的延迟;4、数据仓库的建设和管理都比较复杂;5、如果数据量很大效率会很低,而且要不断的ETL 去各个应用系统同步数据;6、数据仓库利用的也是传统数据库的技术,如果负载较大的时候,扩容成本较高。

如果采用润乾集算报表工具,就可以简单直接地实现混合数据源报表。

润乾集算报表通过内置的集算引擎直接读取各种混合数据源,能够解决上述问题,让数据采用最合适的方式存储,以较小的成本呈现基于混合数据源的实时报表。

ETL 方式和集算报表方式的结构对比示意图如下:文件系统润乾集算报表结构文件报表工具传统结构:数据仓库+ETL下面,通过《州销售人员销售报表》来看一下具体的实现步骤。

报表如下图:报表的销售数据来自于销售系统的mongodb数据库,销售员的信息则来自人力资源系统的db2数据库。

采用集算报表的混合数据源方式,报表数据源不需要定期同步,不会有时间上的延迟。

A2:从数据源中按照预先定义好的参数state="California"读取employee序表。

A3、A4:从销售系统的mongodb中,读取orders序表。

A5:使用集算器的switch函数,将orders序表中的sellerid字段切换成employee序表sellerid=eid关联的记录。

@i选项是指如果找不到对应的记录,则删除该行。

A6:生成一个新的序表,得到需要的字段。

A7、A8:关闭数据库连接。

润乾报表实用技巧大全

润乾报表实用技巧大全

=floor(3451231.234,1)
返回: 3451231.2
round()
对数据在指定位置上 进行截取,剩余部分 四舍五入
=round(3451251.274,1)
返回: 3451251.3
字符串函数
函数名称 函数说明
去掉字符串左右的空 串
实例
实例说明
trim()
trim(" abc ")
常用单元格函数
函数名称 函数说明
对可扩展单元格或集 合表达式求平均值
实例
实例说明 表示当前主格扩 展区域内所有扩 展后的B1单元 格的平均值
avg()
avg(B1{})
if()
根据布尔表达式的不 同计算结果,返回不 同的值。
求当前格的值大 if(value()>100,-65536) 于100时,返回65536颜色值 求当前主格扩展 区域内所有扩展 后的B1单元格 的个数
相同的大小写,并将电子签名文件存放到润乾文件目录下的统一目
录中。如下所示。
2.在需要签名的单元格上右击,选择“数据类型”,在弹出的对话框中 选择图片文件。
制作电子签名
3.修改内容为:=“reportFiles/image/”+RNAM+“.jpg” 点确定保存。
制作电子签名
4.在浏览器中查看签名
网格式填报表-自动计算
• 基本概念
– 在客户端浏览器中跟据输入自动实现单元格值计算
输入自动计算的表达式的规则如下:
• 自动计算的表达式语法规则全部采用 操作 JavaScript 的语法规则。 • 自动计算的表达式中,如果需要相对引用单元格,即当报表进行扩展 注意
打印补空行

润乾集算报表多样性数据源之多结果集

润乾集算报表多样性数据源之多结果集

润乾集算报表多样性数据源之多结果集多样性数据源在报表开发中越来越常见,润乾集算报表对多样性数据源的有效支持使得这类报表开发变得非常简单,目前集算报表除了支持不同类型的数据源(RDB、TXT文本、Excel、JSON、HTTP、Hadoop、mongodb)外,还支持在一个数据集中为报表返回多个结果集使用,这样可以有效避免重复运算,提升报表开发效率和运算性能。

下面通过一个实例说明多结果集的使用过程。

报表说明根据学生成绩表查询总成绩前三名和后三名的学生姓名以及总成绩。

报表样式如下:由于要分别显示前三名和后三名学生姓名和成绩,报表自然地分成了两部分。

这两部分数据如果使用一个数据集会需要隐藏格辅助,使用两个数据集则比较简单,一个数据集基于原始数据进行分组汇总、按总成绩降序排序后取前三名,第二个数据集按升序取前三名。

但这个过程又会发生重复计算(分组汇总和排序),通过集算器返回多结果集则不会有这个问题。

下面是实现过程。

编写集算脚本使用集算脚本编辑器编写计算脚本,完成数据计算及数据源准备工作。

A2:执行sql 查询学生成绩表数据;A3:按照学生分组,汇总成绩;A4:使用A.top()函数按照总成绩取前三条记录; A5:使用A.top()函数按照总成绩取后三条记录; A6:将前后三名记录以两个结果集返回。

编辑报表模板连接报表数据源demo 。

设置数据集 使用集算报表设计器新建报表模板,并设置集算器数据集,调用上面编辑好的脚本。

由于脚本中返回2个结果集,在数据集设置中,需要手动填写数据集名称为“ds1,ds 2”,多个数据集名称之间以逗号分隔。

其中,dfx文件路径既可以是绝对路径,也可以是相对路径,相对路径是相对选项中配置的dfx主目录的。

数据集展现形式:设置报表表达式编辑报表表达式,直接使用集算脚本返回的2个结果集,使用简单的列表表达式,完成报表制作。

可以看到,使用集算器脚本可以为报表输出多个结果集,而且外置的集算脚本具有可视化的编辑调试环境,编辑好的脚本还可以复用(被其他报表或程序调用)。

润乾报表实现无数据源的规则报表及改进

润乾报表实现无数据源的规则报表及改进

润乾报表实现无数据源的规则报表及改进某报表系统中有部分报表需要按照一定规则显示数据,如:显示查询日期范围内的奇数日数据,要求数据库中即使无记录该日期也显示(内容为空)。

本文重点来实现奇数日期序列,数据区不是重点,故置空。

以上述报表需求为例,这里来看一下润乾报表的实现过程,以及改进方法。

润乾报表实现以下为润乾报表的实现方式,考虑跨年和跨月份的情况使用时要对辅助列A列进行隐藏,以及对第2行进行条件隐藏,偶数的日期不显示。

所以报表工具实现要依靠大量隐藏行列。

报表工具实现需要借助隐藏行格完成,主要原因是数据计算和报表呈现混在一起导致,既要完成报表展现,又要兼顾数据计算,往往导致报表计算能力不足。

如果能将数据计算和报表呈现剥离开,那么报表开发将更加快捷。

润乾集算报表5.0是在保留原有润乾报表核心功能的情况下,推出的强计算报表工具,其内置的集算器非常适合完成数据计算,从而将报表数据准备和呈现分开。

本例的需求采用集算报表实现要简单得多,方法如下:集算报表实现编写集算脚本首先使用集算器编写计算逻辑,为报表输出两个日期之间的奇数日。

A1:根据起止日期参数,列出该日期段中的所有日期A2:选出奇数日A3:为报表返回结果集报表调用使用集算报表设计器,新建报表,使用“集算器”数据集类型,选择上面编辑好的集算脚本(time.dfx)设置报表模板及表达式报表中只简单的列表取值即可,无需再完成复杂计算。

由于集算器对集合运算的有效支持,使得从一个集合(所有日期)中选出部分数据(奇数日)非常容易。

不同于在一般报表工具中计算,集算器进行数据计算时不带有任何展现属性,因此效率更高;同时,由于报表端不再包含大量的隐藏格,报表效率得到了进一步提升。

此外,对于代码很简单的脚本,可以不必独立编辑出脚本文件,而使用集算报表内置的脚本数据集,把脚本直接嵌入到报表模板。

方法如下:1、在数据集设置窗口中点击“增加”按钮,弹出数据集类型对话框,选择“脚本数据集”2、在弹出的脚本数据集编辑窗口中编写集算脚本脚本数据集中可以直接使用报表定义的参数,如上述脚本中的begin、end即为报表参数。

润乾报表实现动态数据源报表及改进

润乾报表实现动态数据源报表及改进

润乾报表实现动态数据源报表及改进经常会遇到一些报表需要根据不同的情况(参数)连接不同的数据源从而完成相应的数据的展现,也就是经常说的动态数据源报表。

报表工具通常的做法有两种,一是不同的情况加载不同的数据源连接参数,如:url、driver、username、password等;二是利用已配置的多个连接池,根据不同情况选择。

这里通过一个实例,说明润乾报表的实现过程及改进方案。

报表说明应用中需要通过参数控制报表连接的数据源,当参数flag为1时连接数据源一(db1),否则连接数据源二(db2)。

润乾报表实现首先根据flag参数为context设置不同数据源(这里以两个hsql数据库为例):String flag=request.getParameter("flag");Connection con1 = null;Connection con2 = null;try{Driver driver = (Driver)Class.forName("org.hsqldb.jdbcDriver").newInstance();DriverManager.registerDriver(driver);con1=DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/runqianDB","sa"," ");con2=DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/demo","sa","");}catch (Exception e){e.printStackTrace();}Context cxt= new Context();String defDsName = cxt.getDefDataSourceName ();if ("1".equals(flag) || "1"==flag){cxt.setConnection(defDsName, con1);}else{cxt.setConnection(defDsName, con2);}将cxt存入request:request.setAttribute("myContext", cxt );以context方式发布报表:<report:html name="report1"contextName=”myContext”/>通过使用润乾报表的API可以完成动态数据源报表,详尽的API的确为应用开发人员提供了诸多便利。

润乾报表优化与性能管理

润乾报表优化与性能管理

润乾报表优化与性能管理编制者:吴国邦目录第一章、报表优化 (4)1. 灵活应用多数据集 (4)1.1.1. 网格式、分组式、交叉式尽量用单数据集 (4)1.1.2. 多源分片、主子报表尽量用多数据集 (5)2. 写sql的技巧 (7)2.1.1. 尽量在sql里进行group (7)2.1.2. 尽量不用select * from (8)2.1.3. 尽量在sql里排序 (8)2.1.4. 尽量在sql里过滤 (8)2.1.5. 大数据量可以采用存储过程 (8)3. 当前行、当前组的概念 (9)3.1.1. select函数 (9)3.1.2. select1()函数 (10)3.1.3. group函数 (10)4.写表达式的技巧 (12)4.1. or/|| 操作符 (12)4.2. and/&& 操作符 (12)4.3. 过滤条件 (12)4.4. 二分法查找函数bselect1 (13)4.5. 巧用空值判断nvl (14)4.6. 数据类型的考虑 (15)5. 枚举分组 (16)5.1. enumgroup函数 (16)5.2. plot函数 (17)6. 如何减少冗余单元格占用内存 (19)6.1. 空白单元格的应用 (19)6.2. 慎用隐藏行列 (19)6.3. 慎用合并单元格 (19)第二章、性能管理 (21)7.单用户缓存 (21)7.1.1. 概念定义 (21)7.1.2. 功能背景 (21)7.1.3. 使用方法 (21)7.2. 多用户间共享缓存 (22)7.2.1. 概念定义 (22)7.2.2. 功能背景 (22)7.2.3. 控制方式 (23)7.2.4. 使用方法 (23)7.3. 静态并发控制 (25)7.3.1. 概念定义 (25)7.3.2. 功能背景 (25)7.3.3. 使用方法 (25)7.4动态并发控制 (26)7.4.1. 概念定义 (26)7.4.2. 功能背景 (26)7.4.3. 使用方法 (26)7.5. 大报表运算中断 (27)7.5.1. 概念定义 (27)7.5.2. 功能背景 (27)7.5.3. 使用方法 (27)7.6. 集群时缓存同步 (28)7.6.1. 概念定义 (28)7.6.2. 功能背景 (28)7.6.3. 使用方法 (29)8.7. 表达式预解析 (30)8.7.1. 概念定义 (30)8.7.2. 功能背景 (30)8.7.3. 使用方法 (30)第一章、报表优化1. 灵活应用多数据集1.1.1. 网格式、分组式、交叉式尽量用单数据集看如下的报表:图 1.1.这是一个比较典型的多层交叉报表,其做法有两种:第一种:图 1.2.这种做法设计了五个数据集,每一层的表头都来自一个码表,交叉点的数据汇总时根据条件和表头关联第二种:图 1.3.这种做法只设计了一个数据集,把码表和事实记录表叉乘起来,在报表中进行分组扩展我们试比较一下两种做法的优缺点:第一种做法:1.数据集不需要对多表进行叉乘,取数速度快2.事实记录数据集可以在sql里先进行分组聚集操作,减少取过来的记录书,加快取数的速度和报表运算速度3.表头扩展直接对码表进行select操作,运算速度快4.交叉点汇总需要对事实记录表进行检索遍历,查找出和表头关联的记录进行汇总,交叉点的格子数远远大于表头单元格的个数,事实记录表的记录数也一般远远大于码表的记录数,每个交叉点都要对事实记录表遍历检索一次,运算速度非常慢第二种做法:1.数据集需要对码表和事实记录表进行叉乘,取数速度慢,但是一般情况下码表的字段数只有一两个,而且数据库有索引,记录数不是非常大的情况下慢不了很多2.在数据集sql里就可以对表头字段先进行分组聚集,这样取过来的记录数大大减少,加快了取数速度和报表的运算速度3.表头单元格是对事实记录表进行分组操作,然后再扩展,比第一种做法慢一些,但是由于对数据集只要进行一次的分组操作,因此慢不了太多4.交叉点汇总不需要再对事实记录表进行检索遍历了,而是直接对当前组集里的记录进行汇总,因此速度大大提高了总结:第二种的做法性能优于第一种1.1.2. 多源分片、主子报表尽量用多数据集看如下报表:图 1.4.这是一个比较典型的主子报表,主表一条记录对应子表多条记录,是个典型的一对多的关系,再引伸一下,一个主表可以对应多个子表,每个子表都是多条记录。

润乾集算报表应用开发之修改数据源(学习资料)

润乾集算报表应用开发之修改数据源(学习资料)

润乾集算报表应用开发之修改数据源实际应用中通过程序动态修改报表模板的情况很常见,其中动态修改数据源SQL就是一种典型场景。

常见于系统中有一些结构相同而数据源不同的报表,为减少报表开发工作量,只开发一套报表模板,使用时通过程序动态修改数据源来满足实际需要。

下面通过一个使用JAVA程序修改集算报表数据源SQL的例子说明使用过程。

编辑报表模板:由于不同数据源的字段不同,因此这里使用动态表达式ds1.fname()获取字段名,ds1.field()获取字段值。

此外,第一行和第一列为辅助行列,设置其隐藏。

编写代码:1.读入报表String reportPath = request.getRealPath("/reportFiles/demo.rpx");ReportDefine rd = (ReportDefine)ReportUtils.read(reportPath);2.更改报表数据源DataSetMetaData dsmd=new DataSetMetaData(); //构造数据集元数据SQLDataSetConfig sdc=new SQLDataSetConfig(); //构造数据集定义sdc.setName("ds1"); //设置数据集名String sql = "";//根据不同参数,为报表设置不同数据源SQL,实际使用中可以从配置文件中读取switch(Integer.parseInt(type)){case 1:sql="select * from 员工表";break;case 2:sql="select * from 订单明细 order by 订单ID";break;default:sql="select * from 客户销售表";}sdc.setSQL(sql); //设置 sql语句dsmd.addDataSetConfig(sdc); //把数据集定义添加到数据集元数据rd.setDataSetMetaData(dsmd); //把数据集元数据赋给ReportDefine3.将ReportDefine存入request后使用defineBean方式发布报表rd.setDataSetMetaData(dsmd); //把数据集元数据赋给ReportDefinerequest.setAttribute("reportDefine",rd);<report:html name="report1"srcType="defineBean"beanName="reportDefine"exceptionPage="/reportJsp/jsp/myError.jsp"/>实现效果:当type=1时显示员工信息表数据:当type=2时显示订单明细表数据:【附】changeds.jsp完整代码:<%@page contentType="text/html;charset=GBK"%><%@taglib uri="/WEB-INF/raqsoftReport.tld"prefix="report"%> <%@page import="java.io.*"%><%@page import="java.util.*"%><%@page import="ermodel.Context"%><%@page import="com.raqsoft.report.model.ReportDefine"%><%@page import="com.raqsoft.report.util.ReportUtils"%><%@page import="ermodel.SQLDataSetConfig"%><%@page import="ermodel.DataSetMetaData"%><html><link type="text/css"href="css/style.css"rel="stylesheet"/><body topmargin=0leftmargin=0rightmargin=0bottomMargin=0><%request.setCharacterEncoding( "GBK" );String type = request.getParameter("type");//取得报表真实路径String reportPath = request.getRealPath("/reportFiles/demo.rpx");ReportDefine rd = (ReportDefine)ReportUtils.read(reportPath);DataSetMetaData dsmd=new DataSetMetaData(); //构造数据集元数据SQLDataSetConfig sdc=new SQLDataSetConfig(); //构造数据集定义sdc.setName("ds1"); //设置数据集名String sql = "";//根据不同参数,为报表设置不同数据源SQL,实际使用中可以从配置文件中读取switch(Integer.parseInt(type)){case 1:sql="select * from 员工表";break;case 2:sql="select * from 订单明细 order by 订单ID";break;default:sql="select * from 客户销售表";}sdc.setSQL(sql); //设置 sql语句dsmd.addDataSetConfig(sdc); //把数据集定义添加到数据集元数据rd.setDataSetMetaData(dsmd); //把数据集元数据赋给ReportDefinerequest.setAttribute("reportDefine",rd);%><jsp:include page="toolbar.jsp"flush="false"/><table id="rpt"align="center"width=100%height=100%><tr><td align=center valign=top height=100%><report:html name="report1"srcType="defineBean"beanName="reportDefine"exceptionPage="/reportJsp/jsp/myError.jsp" /></td></tr></table></body></html>。

润乾报表使用技巧分享

润乾报表使用技巧分享

润乾报表
1.关于隐藏列的导出问题:
如果报表中使用了隐藏列,则在保存为EXCEL后会出现如下情况:
(1)被隐藏的列或单元格中的值会显示出来。

2.如何分页打印表头:
在分页打印报表的时候,如果想将表头在每页都打印出来,则可以将表头做冻结。

3.如何确定表格的分页方式:
在设计器中选择属性报表属性。

在弹出的窗口中可以设置报表的分页方式。

4.创建报表时应注意的问题:
创建报表时通常选空白报表选项,使用其它模板创建出来的报表,会出现一些扩展后不显示之类的奇怪问题。

5.扩展时注意事项:
(1)在选取字段的时候尽量使用数据集函数group();
(2)这个函数中字段与条件之前是两个“,”号分开的,他省略了一个对数据集的排序方式选项。

(3)尽量在数据集中排序,在报表级排序对性能有一些影响。

6.属性格中的一些使用技巧:
在属性窗口中每一个属性后都会有一个“…”按钮,这个可以用来写表达式控制该属性是否起作用。

如:
当满足某种条件是该行显示,则可以这样写
也可以设置满足某种条件后,某行或某单元格的背景色等等。

7.报表列过多:
有时报表计算的列过多会报JA V A堆空间不足异常,这时可以修改一下TOMCAT JVM 中内存区的值。

润乾报表设计器简易教程

润乾报表设计器简易教程

润乾报表设计器简易教程建立一个新的报表由存储过程的编写和表样的设计两部分组成,其中,表样的设计是利用润乾设计器进行的。

用润乾建立一个新的表样可以分为以下几步:新建数据源、连接数据源、设置参数、设置数据集、绘制表样、预览表样。

在以下步骤说明中,以预算上报下达差异表为例进行说明。

该报表的查询条件包括年度、单位和模板。

表样如下所示:2010年预算上报下达差异表制表部门:查询单位期间:2010年单位:万元预算科目本单位下级单位1 下级单位2 上报值下达值差异上报值下达值差异…预算科目1预算科目2预算科目3预算科目4预算科目5合计制表人:登录用户制表时间:2010-07-261新建数据源配置数据源的目的是为了连接数据库。

配置的步骤如下:➢打开设计器后,点击配置——数据源,打开配置数据源的界面。

➢点击新建,在数据库类型中根据实际情况选择数据库类型,针对TBM系统,选择的是关系数据库,点击确定。

➢在数据源常规属性设置页面进行数据源的设置,如下图所示:✓数据源名称:可以任意指定,建议采取tbmbj等名称对各地数据库进行直观性区分。

✓数据库类型:选择对应数据库类型,TBM系统采用的是DB2数据库。

✓客户端字符集:指的是从数据库取出的数据在客户端展现时的字符编码,可以采用默认的GBK。

✓数据库字符集:指的是从数据库中取过来的字符编码,根据数据库的编码类型选择,可以采用默认的GBK。

✓驱动程序:输入“com.ibm.db2.jcc.DB2Driver”即可。

✓数据源URL:数据源URL的输入格式为jdbc:db2:// IP地址:端口号/数据库名,例如:jdbc:db2://192.168.168.6:50000/tbmbj。

✓用户、口令:数据库用户名和密码。

➢设置完成后,点击【确定】按钮,回到数据源配置界面,关系数据库类型的数据源就配置完成了,数据源配置界面中就列出了新建的数据源。

2连接和断开数据源选中需要连接和断开的数据源后,点击数据源配置窗口的连接或断开即可。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
} return cell.getNumericCellValue() + ""; case HSSFCell.CELL_TYPE_STRING: return cell.getStringCellValue(); case HSSFCell.CELL_TYPE_FORMULA: return cell.getCellFormula().toString(); default: returnnull; } }
}
2、 在自定义数据集中接收并解析报表参数,判断使用哪些文件; // 取得参数列表并分别取得它的参数名与值,宏与之类似 Map map = ctx.getParamMap(false);
int begin = Integer.parseInt(map.get("begin").toString()); int end = Integer.parseInt(map.get("end").toString());
润乾报表使用 EXCEL 数据源的方法及改进
Excel 作为一种常见的文件格式广泛存在,很多报表的数据来源于 Excel。由于报表一般 都带有参数,经常需要对原始数据进行分组、过滤等,都需要再编写程序代码才能满足有参 数报表的查询需求。
润乾报表使用 Excel 数据源,需要用 Java 程序处理文件,通过自定义数据集为报表提供 数据源支持。这里通过一个实例说明润乾报表实现过程,以及改进方式。
// 设置数据集中的数据 for (int i = 1; i <list.size(); i++) {
Stock stock = list.get(i); com.runqian.report4.dataset.Row rr = ds1.addRow(); rr.setData(1, stock.getCode()); rr.setData(2, stock.getTradingDate()); rr.setData(3, stock.getPrice()); }
String price = null;
while (rows.hasNext()) {
Row row = rows.next(); // 获得行数据
的迭代器
Iterator<Cell> cells = row.cellIterator(); // 获得第一行
while (cells.hasNext()) {
SimpleDateFormat("yyyy-MM-dd"); double value = cell.getNumericCellValue(); Date date = ermodel.DateUtil .getJavaDate(value); return sdf.format(date);
这里使用 poi 读取操作 Excel,以下为实现步骤: 1、 定义股票信息类,用于存储股票交易信息
class Stock { //省略构造函数和get set方法 private String code; private String tradingDate; private String price;
InputStream input = new FileInputStream(fileName); // 建立
输入流
Workbook wb = null;
// 根据文件格式(2003或者2007)来初始化
if (isE2007)
wb = new XSSFWorkbook(input);
else
的迭代器
报表描述
基金公司将股票信息以每月一个 Excel 存储,命名方式为:stock_yyyyMM.xls。包括每只 股票的股票编码、交易日期和收盘价,现报表参数为起始年月和结束年月,报表按照交易日 排序,展现股票交易记录列表。 Excel 内容如下:
报表格式如下: 股票编码
交易日期
润乾报表实现
收盘价
自定义数据集
} }
3、 使用 getCellValue()方法判断单元格格式,由于 Excel 会将日期按照 numeric 类型存 储,所以要在程序中区分数值和日期,并完成相应转换
publicstatic String getCellValue(Cell cell) { switch (cell.getCellType()) { // 根据cell中的类型来输出数据 case HSSFCell.CELL_TYPE_NUMERIC: //解析自定义日期格式yyyy-mm-ddd if (cell.getCellStyle().getDataFormat() == 184) { SimpleDateFormat sdf = new
4、实现读入 Excel 方法 readExcel(),根据传入 Excel 文件名读入并解析,将文件内容 存入 List
publicstaticvoid readExcel(String fileName) { boolean isE2007 = false; // 判断是否是excel2007格式 if (fileName.endsWith("xlsx")) isE2007 = true; try {
wb = new HSSFWorkbook(input); Sheet sheet = wb.getSheetAt(0); // 获得第一个表单 Iterator<Row> rows = sheet.rowIterator(); // 获得第一个表单
String code = null;
String date = null;
stock1.getTradingDate().compareTo(stock2.getTradingDate()); }
}
6、使用Collections.sort完成List排序 ComparatorStock cs = new ComparatorStock(); Collections.sort(list, cs);
7、创建数据集,并根据排序后 List 内容设置数据集数据 // 构造一个数据集ds1,设置列名 DataSet ds1 = new DataSet("ds1"); Stock col = colList.get(0); ds1.addCol(col.getCode()); ds1.addCol(col.getTradingDate()); ds1.addCol(col.getPrice());
Cell cell = cells.next();
System.out.println("Cell #" +
cell.getColumnIndex());
switch (cell.getColumnIndex()) {
case 0:
code = getCellValue(cell);
break;
case 1:
此外,如果集算脚本比较简单,可以直接使用集算报表内置的脚本数据集(一种数据集 类型),将脚本直接嵌入到报表模板中,而不必在单独在集算器中完成。实现方式如下: 1、在数据集设置窗口中点击“增加”按钮,弹出数据集类型对话框,选择“脚本数据集”
2、在弹出的脚本数据集编辑窗口中编写集算脚本
脚本数据集中可以直接使用报表定义的参数,如上述脚本中的 begin、end 即为报表参数。 3、报表调用,与其他数据集使用方式一致,不再赘述。
这种情况下,采用润乾报表基础上的计算强化版集算报表将是个不错的选择。集算报表 内置的集算器对 Excel 文件读取的先天支持可以帮助集算报表快速完成 Excel 数据源报表。 本例在集算报表中可以这样完成。
集算报表实现
首先使用集算完成文件读入和排序,集算脚本如下: A
1 =to(begin,end).select( ~%100>0 && ~%100<13 ) 2 =A1.("E:\\stock_"+string(~)+".xls").(file(~).import@t()).conj() 3 result A2.sort(DATE) A1:根据起始结束月份参数列出中间包含的月份 A2:根据 A1 的计算结果,逐个读入月份文件,并将结果合并 A3:为报表返回按照交易日期排序后结果
date = getCellValue(cell);
break;
case 2:
price = getCellValue(cell);
break;
}
}
if (row.getRowNum() == 0){
colList.add(new Stock(code, date, price));
}else{
list.add(new Stock(code, date, price));
报表调用
数据集设置 集算报表中使用集算器数据集类型,选择上面编辑好的集算器脚本文件(fromExcel.dfx)
其中 b、e 为报表参数,begin、end 为集算脚本参数 报表模板及表达式
通过上面的步骤可以看到,使用集算报表完成 Excel 数据源报表非常简单,既不需要大 量的 Java 编程,也不必为到底选用何种方式(poi、jxl、jcom)操作 Excel 而费心。集算器脚 本只需要 3 行即可完成计算过程,而同样的计算任务 Java 程序则需要几百行。集算报表让 文件拥有了计算能力,使得开发文件数据源报表更为简单方便。
return ds1;
报表调用
报表使用自定义数据集类型
设置报表模板及表达式
通过自定义数据集后在报表中调用可以完成本例的报表需求,润乾报表支持用户自定义 数据集处理数据,体现了极大的灵活性。但过于依赖 Java 编程无疑增加了报表开发的难度, 本例只是简单的完成了文件读取和排序,当包含分组、连接等计算时程序的复杂度会陡然上 升,对报表开发人员来说都是不小的挑战。当然也可以用报表工具来完成排序等运算,但这 样会导致占用较大的内存(特别是有过滤动作时,需要把数据都取到报表端再执行过滤), 性能也会受到较大影响,有许多复杂的文件操作也会超出报表计算能力范围。
相关文档
最新文档