birt

从BIRT报表文件中获取页面设置信息(页边距、纸张大小、输出方向)的方法

家住魔仙堡 提交于 2020-04-06 22:50:24
报表打印时,尤其是套打的报表,页面设置信息非常重要,比如页边距,纸张大小,输出方向等,而且每个报表的相关参数有可能不同,因此相关参数从具体报表中获取是一个非常正常而且合理的想法。 如果采用BIRT作为报表的开发工具,报表设计器负责报表的制作,BIRT运行时负责处理报表文件,对于浏览器来说,BIRT后端输出的是网页,并不包含页面设置相关信息,浏览器有自己的打印设置选项,也不会从网页中读取,但是报表设计器在报表设计时提供页面设置信息的设置界面,因此我们需要通过运行时API手工写代码从具体报表中获取页面设置信息,然后再通过其他方式将参数传递给打印机(操作打印机不在本文讨论范围内),本文通过BIRT的源代码的研究,提供相关的样例代码。 BIRT报表设计器的页面设置信息在主页选项卡所对应的属性面板中体现,不再赘述,直接上代码: IReportEngine birtEngine = ...; Map moduleOptions = new HashMap(); moduleOptions.put(IModuleOption.RESOURCE_FOLDER_KEY,sc.getRealPath("/")); IReportRunnable runnable = birtEngine.openReportDesign(reportFileName,null,moduleOptions);

免费开源JAVA报表工具对比 BIRT报表VS润乾报表之初体验

风流意气都作罢 提交于 2020-03-28 13:38:50
前一段时间,被导师安排对报表开发工具做调研,之后就一度泡在各大博客、论坛里,尽可能全面的搜集了几款报表工具的优缺点,攒成了 《 java 报表工具报表软件选型经验总结分享》。 不过大多都是直接抄的百度百科的介绍(嘿嘿…),并没有真的去挨个进行试用。还好导师看过后基本认可,接下来就只安排了对其中两种报表工具做深入对比,同样要求提交书面对比报告…… 对比报表工具: BIRT、润乾报表 原因: 一个是开源的免费,另一个是商用最便宜的……好吧,我承认我们真的很穷~~~ 意外的是,在试用润乾报表的过程中,在论坛上发现居然有免费的版本,相信到时心里的天平又会倾斜一点了吧。润乾报表免费版参考链接是: http://c.raqsoft.com.cn/article/1543913283529 试用环境: Window 10 操作系统、JDK 1.8.0_73 对比内容 1. 通过DEMO演示初步了解 BIRT : 暂时没找到相关信息。 润乾报表 : 地址: http://report5.raqsoft.com.cn/ ,包括:大屏多组件展示,基本报表(分组报表、网格式报表、报表组等),参数查询(模糊查询、下拉选择、下拉日历等),图形展示(仪表盘、地图、线图、柱状图、饼图等),复杂报表(折叠表、交叉报表等),填报表,多种打印导出方式…,等等。 小结: 大致看完,润乾报表的demo演示

选开源报表开发还是商用?2020报表软件产品整理

不羁岁月 提交于 2020-03-21 03:20:50
3 月,跳不动了?>>> 开源报表却越来越受到程序员热烈追捧,如ireport、 Jsper report、jfreechart这样的免费,开源的JAVA报表工具,在一下开源的JAVA报表相关的论坛里面都是热火朝天,发问者众多。发现都会有利有弊,近因为公司需求的原因,我上网查找了好多报表工具和试用体验,下面是我向大家推荐5个开源报表工具。 1.iReport iReport是为JasperReports设计的强大的,直观的,易于使用的可视化报表设计器,用Visual J++为Win32平台编写。iReport允许用户可视化地编辑XML JasperDesign文件,可以和其它数据库通过JDBC通信。在设计模板时可以以Html、Excel、Pdf等多种方式进行预览;用它生成的文件有.jrxml、.jasper两种文件,其中.jrxml就是我们设计时可视化编辑的xml文件,.jasper是经过编译.jrxml后生成的类文件,也就是我们最终在项目中用的报表模板文件。 2. JasperReport JasperReports是一个基于Java的开源报表工具,基于GPL开源许可协议, 完全采用java编写, 支持多种数据源,可打印或导出多种文件格式,支持PDF、HTML、XLS、CSV和XML文件输出格式。JasperReports是当前Java开发者最常用的报表工具。

birt 报表设计(6)— 嵌套表格

心已入冬 提交于 2020-03-17 22:29:51
某厂面试归来,发现自己落伍了!>>> 嵌套报表 嵌套报表其实是一种设计技巧的应用,类似编码过程中的模块化设计。当报表的复杂程度让设计者开始觉得逻辑混乱的时候,可以使用嵌套报表设计方法,将报表拆分为多个不同的设计页面,然后使用一个总的页面将这些设计页面整合起来展现。 此外,嵌套报表有时候也会用于主从结构的实现,通过逐层嵌套,可以实现无限层次的主从结构数据展现。 创建数据集 第一个数据集(承包商违章缴款记录): select FCompanyId, FTargetName,FMoney from D_Violation a 第二个数据集(承包商信息): select FName,FPrincipal,FPrincipalPhone,FContractProjec from D_Contractor where FNumber = ? 如上条件(承包商编号)就是一个暂位符,因为实际的参数要从第一个数据集中获取。当条件用"?"号指定后 编辑器就要你指定一个数据集参数了如: 我们为其指定一个默认的参数空字符串 准备完数据集后,就来绘制表格了: 1. 建立一个1列2行的网络。 2. 拖拽一个2行2列表格至第二行的网格中; 3. 选中表格的第一个“明细数据”行,右键点击后选择“合并单元格”将本行两列 合并为一列。 4. 拖拽一个网络4 列1行至表格的第一个“明细数据”行中(即刚合并的行) 5.

birt 报表设计(10)—jdbc数据源

試著忘記壹切 提交于 2020-02-29 08:00:47
1.创建一个报表项目pl_report ,然后创建一个报表report_1.rptdesign。并为其创建一个jdbc数据源 本例是使用sqlServer数据库,且连接驱动是使用jtds-1.3.1.jar。所以这里要加入 jtds-1.3.1.jar包如: 记住最后将设计好的报表复制到 birt_runtime项目下时也要把 jtds-1.3.1.jar加入项目中。设置好参数后就完成了数据源的创建了。 下面我们要为该数据源写脚本,让其从配置文件中读取连接参数。 1. 在项目下创建jdbc连接配置文件:mssql_connect.properties。文件内容如下: database.driver=net.sourceforge.jtds.jdbc.Driver database.host=192.168.4.30 database.prot=3433 database.userName=test database.password=test123 database.url=jdbc:jtds:sqlserver://192.168.4.30:3433/AqSc 2.选中刚才创建的数据源然后在设计界面中选择“脚本”选项目卡 我们将在beforeOpen面板中编写脚本,脚本内容如下: importPackage(Packages.java.io); importPackage

birt runtime 报表接口(1)

懵懂的女人 提交于 2020-02-29 07:15:58
当启动runtime项目后我们就可以使用url去访问项目了如: http://localhost:8080/birt/ frameset ? __report =blank.rptdesign 如上是一个 frameset 模式,并通过 __report 指定了要展示的报表。 先说birt runtime提供的模式 frameset ―― 采用Ajax框架,可以显示工具条,导航条和TOC面板,实现复杂的操作,如分页处理,导出数据,导出报表,打印等等。该模式下会自动生成report document文件(预览report design文件)到特定的目录(用户可以用参数指定,也可以定义在web.xml里)。采用Ajax,速度较慢。 run ――也采用Ajax框架,但不实现frameset的复杂功能,不会生成临时的report document文件(预览report design文件),也不支持分页,这个主要是应用在BIRT Designer里的preview tab里,可以支持cancel操作,其它不怎么常用。采用Ajax,速度较慢。 preview ――没有用到Ajax框架,直接调用底层Engine API对报表进行render,把生成的报表内容直接输出到浏览器。这种模式和run模式调用的是相同的Engine API,唯一区别在于run采用Ajax获取报表内容

How to disable or enable the chart visibility in BIRT

北战南征 提交于 2020-02-07 12:26:34
问题 I have a problem, I need to dynamically show the chart according to the user's selection with BIRT. Could anyone tell me how to do that with script? I have created the parameter for the selection. 回答1: The easiest way is to set the visibility property of the chart (or of a grid containing this chart) with an expression using a parameter. This example hides the grid of a crosstab if the value of "View" report parameter equals to "charts". However this is not the most efficient approach,

How to disable or enable the chart visibility in BIRT

谁说我不能喝 提交于 2020-02-07 12:26:30
问题 I have a problem, I need to dynamically show the chart according to the user's selection with BIRT. Could anyone tell me how to do that with script? I have created the parameter for the selection. 回答1: The easiest way is to set the visibility property of the chart (or of a grid containing this chart) with an expression using a parameter. This example hides the grid of a crosstab if the value of "View" report parameter equals to "charts". However this is not the most efficient approach,

让 Birt 报表脚本数据源变得既简单又强大

这一生的挚爱 提交于 2020-02-06 10:35:14
概述:运行在 JVM 上的 SQL 函数和存储过程 总所周知,有些数据库没有强大的分析函数(eg. Mysql), 有些数据库没有存储过程(eg. Vertica),当遇到复杂的数据计算,往往只能通过 Python,R 等外部脚本来实现,但这些脚本语言和主流工程语言(Java)集成性不好,如果直接用工程语言实现类似 SQL 函数和存储过程的功能,经常只是针对某个计算需求编写冗长的代码,代码几乎不可复用。 另外,即便拥有强大的分析函数,实现稍复杂的逻辑其实也不算容易,比如下面这种常见的业务计算,找出“销售额占到一半的前 n 个客户,并按销售额从大到小排序”,在 Oracle 中 SQL 实现如下: with A as (selectCUSTOM,SALESAMOUNT,row_number() over (order by SALESAMOUNT) RANKING from SALES) select CUSTOM,SALESAMOUNT from (select CUSTOM,SALESAMOUNT,sum(SALESAMOUNT) over (order by RANKING) AccumulativeAmount from A) where AccumulativeAmount>(select sum(SALESAMOUNT)/2 from SALES) order by

JOIN two (2) Datasets from different DB on BIRT Designer (v.4.4.0)

烂漫一生 提交于 2020-02-06 08:23:57
问题 I would like to ask about my problem that i faced these days during "designing" some reports with BIRT Designer (v.4.4.0). I tried making an UNION DATASET but that didnt work for me. I can make a SWITCH formula for Name and Surname from the workers but i have to write over 500 Names and Surnames with ID on the formel. So that technique doesnt work. The Example is like this below. I have two databases and of course tables on it. Database Name: DB_1 Table Name: Production Worker_ID Machine_ID