Birt报表金额大小写转换

Birt报表金额大小写转换
Birt报表金额大小写转换

var currencyDigits=dataSetRow["PAYAMOUNT"]; var MAXIMUM_NUMBER = 99999999999.99; var CN_ZERO = "零";

var CN_ONE = "壹";

var CN_TWO = "贰";

var CN_THREE = "叁";

var CN_FOUR = "肆";

var CN_FIVE = "伍";

var CN_SIX = "陆";

var CN_SEVEN = "柒";

var CN_EIGHT = "捌";

var CN_NINE = "玖";

var CN_TEN = "拾";

var CN_HUNDRED = "佰";

var CN_THOUSAND = "仟";

var CN_TEN_THOUSAND = "万";

var CN_HUNDRED_MILLION = "亿";

var CN_SYMBOL = "人民币";

var CN_DOLLAR = "元";

var CN_TEN_CENT = "角";

var CN_CENT = "分";

var CN_INTEGER = "整";

var integral;

var decimal;

var outputCharacters;

var parts;

var digits, radices, bigRadices, decimals;

var zeroCount;

var i, p, d;

var quotient, modulus;

if(currencyDigits != null){

currencyDigits = currencyDigits.toString(); currencyDigits = currencyDigits.replace(/,/g, ""); currencyDigits = currencyDigits.replace(/^0+/, ""); parts = currencyDigits.split(".");

if (parts.length > 1) {

integral = parts[0];

decimal = parts[1];

decimal = decimal.substr(0, 2);

}

else {

integral = parts[0];

decimal = "";

}

digits = new Array(CN_ZERO, CN_ONE, CN_TWO, CN_THREE, CN_FOUR, CN_FIVE, CN_SIX, CN_SEVEN, CN_EIGHT, CN_NINE);

radices = new Array("", CN_TEN, CN_HUNDRED, CN_THOUSAND);

bigRadices = new Array("", CN_TEN_THOUSAND, CN_HUNDRED_MILLION); decimals = new Array(CN_TEN_CENT, CN_CENT);

outputCharacters = "";

if (Number(integral) > 0) {

zeroCount = 0;

for (i = 0; i < integral.length; i++) {

p = integral.length - i - 1;

d = integral.substr(i, 1);

quotient = p / 4;

modulus = p % 4;

if (d == "0") {

zeroCount++;

}

else {

if (zeroCount > 0)

{

outputCharacters += digits[0];

}

zeroCount = 0;

outputCharacters += digits[Number(d)] + radices[modulus]; }

if (modulus == 0 && zeroCount < 4) { outputCharacters += bigRadices[quotient];

}

}

outputCharacters += CN_DOLLAR;

}

if (decimal != "") {

for (i = 0; i < decimal.length; i++) {

d = decimal.substr(i, 1);

if (d != "0") {

outputCharacters += digits[Number(d)] + decimals[i];

}

}

}

if (outputCharacters == "") {

outputCharacters = CN_ZERO + CN_DOLLAR;

}

if (decimal == "") {

outputCharacters += CN_INTEGER;

}

outputCharacters = CN_SYMBOL + outputCharacters;}

【精编推荐】birt动态分组报表制作

【精编推荐】birt动态分组报表制作

1 BIRT报表开发环境准备 3 1.1 BIRT报表开发准备 3 1.2 建立Web Project 3 1.3 配置交叉报表数据源 6 1.3.1 建立公共资源的文件夹 6 1.3.2 建立公共资源Library 7 2 动态分组交叉报表11 2.1 建立报表文件夹11 2.2 建立报表文件12 2.3 复用报表数据源13 2.4 配置交叉报表结果集14 2.5 配置交叉报表分组字段17 2.5.1 新建Data Cuber 17 2.5.2 新建Groups 18 2.6 配置交叉报表求和字段19 2.7 交叉报表表样制作20 2.7.1 新建Cross Tab 20 2.7.2 完成报表表样制作21 2.8 报表分页实现21 2.9 预览交叉报表21 3 部署交叉报表22 4 运行交叉报表22

1BIRT报表开发环境准备 1.1 BIRT报表开发准备 (1)、Ecplise:这里我使用的是Eclipse Platform Version: 3.6.2。 (2)、BIRT插件:可以通过Ecplise中的Install New Software 添加Birt插件。插件地址:https://www.360docs.net/doc/db12620783.html,//birt/update-site/2.6/ (3)、Tomcat:这里我使用的是apache-tomcat-6.0.16 1.2 建立Web Project (1)、新建Web Project 为了体现BIRT与实际应用项目相结合的特点,首先建立一个Web Project,工程命名为myReport。

birt报表技巧

Birt中的分页显示报表: 方法如下: 1、将鼠标停在表格上,选择明细数据行(Row Detail) 。 2、选择脚本(script)标签,在onPrepare方法中加入: count=0; 在onCreate方法中加入: count++; if(count % 10==0) { this.getStyle().pageBreakAfter="always"; } 然后放到服务器上运行,则实现分页显示。 Birt中报表参数的用法(一) Birt中有两种参数,一种是数据集参数,一种是报表参数。数据集参数一般是用于select语句中的?所代表的参数的。而报表参数一直则是整个报表的参数,定义它的目的一方面是和数据集参数绑定,一方面是在脚本中使用它。例如:我想设计一个报表,通过参数传递一个数据库中的表名,显示相应表中的数据,所有的表的结构一样!做法如下: 先定义数据源;然后定义数据集,查询选项中的语句写select * from [要传入的表名中的任意一个];然后定义一个报表参数table,设置一个默认值(默认表名);然后再数据集的脚本的beforeOpen方法中加入:this.queryText="select * from "+params["table"]; ;完成。 如何在Tomcat中配置使得能显示Birt Chart报表: 今天看了一本关于Birt方面的书,提到了在Tomcat中成功部署Birt的方法。我试了一下,果然可以,即可访问普通报表,又可访问chart报表,而且方法也比较简单。现介绍如下: 1、从网上下载birt-runtime-version.zip并解压 (https://www.360docs.net/doc/db12620783.html,/birt/downloads/build.php?build=R-R1-2_1_3-200707051847)。 2、将解压后根目录中的WebViewerExample文件加复制到Tomcat根目录下的webapps 下面,并更名为birt_viewer2.2(因为我下的是2.2版本) 3、复制第三方软件:iText.jar(复制到 birt_viewer2.2\WEB-INF\platform\plugins\com.lowagie.itext_1.5.2.v20070626\lib 下)

birt报表修改表格宽度的学习总结

修改birt报表的表格宽度的学习总结 一、原因 Birt做的报表表格宽度是根据表格里面的内容自动显示宽度,每列的宽度是与表头(header的label)或者表body(detail的data)里面内容最多的一格的宽度一致,有时候表头里面文字很长,但是该表头的那一列表body里面的内容却很少,就照成了除表头以外,body下面每一格特别的空,这样的列若是比较多的话表格就很不好看,而且浪费空间,以我碰到的问题为例,如图: 这个报表分为两部分,前一部分是直接用报表设计器设计的,表头是居顶的,后一部分是用代码加上去的,表头居中,而且他的内容全是数字,相对来说比较少,感觉空的地方很多,看上去不美观。 二、试着调试 由于网上资料比较少,我自己调试时都是自己摸索的,可能有些地方不是很简洁,但是效果还是出来了。 (1)、首先调整直接用报表设计器设计的报表,可以有两种方法调试, 1.第一种是手工代码调试:xml resource 先调整表头,所以在

下面的你想设计宽高的那一列下面,添加属性,根据里面的内容设计宽和高,这里我设计的是宽1.5cm,高0.7cm,注意是在label下面添加设置语句,: 0.7cm 1.5cm

如图:

点击table,然后选中你想要调整的那一行或者那一列,打开属性编辑器(birt 高级版本可以右击哪一行或者列直接打开,低版本的需要点击eclipse左下角的 下面的属性版本 ) 想要修改那一行或者列的宽或者高时,先以调整列宽为例,选中一列,在属 里面, 调整行高度跟列宽度类似,这里就不写出来了。 (2)调整由代码插入进来的行宽列高 这个就比较简单,在插入列以及header下直接写代码 MyLable.setWidth(“1.5”); myLabel.setHeight("0.7cm"); myDataItem2.setHeight("0.3cm"); myDataItem2.setWidth("1.5cm");

人民币小写金额转换成大写格式

人民币小写金额转换成大写格式 要将人民币小写金额转换成大写格式,用Excel提供的格式,将自定义格式类型中的“[dbnum2]G/通用格式”改为“[dbnum2] G/通用格式“元””来实现。但在转换小数时却出现了问题,比如¥6,050.09只能转换为“陆仟零伍拾.零玖圆”。那么用Excel 能不能解决这一先天不足呢?其方法有以下两种(以下均对B1转换,假设B1是通过函数ROUND( )四舍五入取得二位小数的小写金额数,其值为¥6,050.09)。 一、在三个连续的同行单元格中转换 1. B2中输入公式“=IF(B1〈0,"金额为负无效",INT(B1))”,计算结果为¥6,050.00,然后点击“格式→单元格→数字→特殊→中文大写数字→确定”,B2显示“陆仟零伍拾”,再点击“格式→单元格→数字→自定义”,将“类型”编辑框中的“[dbnum2]G/通用格式”修改为:[dbnum2](“人民币”)G/通用格式“元”,此时B2显示:“(人民币)陆仟零伍拾元”。 2. C2中输入“=IF(B1〈0,"",INT(B1 10)-INT(B1) 10)”,同样C2改为:[DBNum2]G/通用格式“角”,C2显示:“零角”。 3. D2中输入“=IF(B1〈0,"",INT(B1 100)-INT(B1 10) 10)”,同样D2改为:[DBNum2]G/通用格式“分”, D2显示:“玖分”。 这样在连续的三个同行单元格中实现了大写金额格式的转换,如图1所示。为了使转换符合财务格式,B2应右对齐,C2列宽无间隔,且不设左右边框线,D2要左对齐。

二、用Excel提供的函数转换 个位为0,则不显示;不为0,显示“XXX元”;不为0、且角位和分位均为0,显示“XXX元整”;元角分位均为0,则显示“零元整”。 小数点后面第一位为0、且元位或分位有一为0,则不显示;为0、且元位和分位均不为0,则显示“零”;不为0,显示“X角”。 小数点后面第二位为0,则显示“整”;不为0,显示“X分”。 根据以上思路在B2中输入公式: “IF(B1〈0,"金额为负无效",IF(OR(B1=0,B1=""),"(人民币)零元整")); IF(B1〈1,"(人民币)",TEXT(INT(B1),"[dbnum2](人民币)G/通用格式")&&"元")&&IF(INT(B1 10)-INT(B1) 10=0); IF(INT(B1) (INT(B1 100)-INT(B1 10) 10)=0,"","零"),TEXT(INT(B1 10)-INT(B1) 10,"[dbnum2]")&&"角")&&IF((INT(B1 100)-INT(B1 10) 10)=0,"整",TEXT((INT(B1 100)-INT(B1*10)*10),"[dbnum2]")&&"分")))”。 确认后B2显示:“(人民币)陆仟零伍拾元零玖分”。以后使用时将公式复制到有关单元格中,若转换的对象B1发生了变化,可点击“编辑→替换”将B1替换掉。两种转换测试结果如图2所示。

Eclipse BIRT 简单报表开发

Eclipse BIRT 简单报表开发 帮助文档: https://www.360docs.net/doc/db12620783.html,/documentation/BIRT_231/wwhelp/wwhimpl/js/html/wwhelp.htm 1新建报表: 1.1运行向导建立工程,如下图: 1.2选择新建的工程,如下图:

1.3建立报表文件,如下图

这里选中Report templates:Blank Report

已经完成建立报表文件。 2连接数据库 2.1建立Data Source 这里我们会连接SQL Server 2005的示例数据库:AdventureWorks ●请确认已经安装这个示例数据库 ●请确认Sql server 2005已经打开TCP/IP连接,如下图: 打开建立Data Source向导,如下图:

这里要注意如果刚安装的Eclipse BIRT是没有(如下图): Com.microsoft.sqlserver.jdbc.SQLServerDriver (v1.2) 下载地址: https://www.360docs.net/doc/db12620783.html,/download/8/B/D/8BDABAE2-B6EA-41D4-B903-7916EF36 90EF/sqljdbc_1.2.2323.101_enu.exe 安装方法: ●把文件解压 ●Manage Drivers ●Add-> 选中解压出来的文件:sqljdbc.jar ●添加成功 连接串:jdbc:sqlserver://localhost:1433;databasename=AdventureWorks

birt报表使用简要说明

Birt报表使用指南 1Birt的安装方法 把birt整合到了Myeclipse6.5中,(eclipse的官方网站上提供有一个birt-report-designer-all-in-one-2_2_2.zip,你直接解压缩这个就可以了,就免去了birt与Myeclipse6.5的整合)。 如果要把birt安装到Myeclipse6.5中,要注意一些事情 1.1eclipse的版本 就是说你的eclipse版本要和适当的birt版本配合,当前birt的最新稳定版是birt2.3。 如果使用的是eclipse3.3版本,你应该用birt-report-framework-2_2_2.zip,如果使用的是eclipse3.4,你应该用birt-report-framework-2_3_0.zip版本不一致会出一些问题。 1.2在Myeclipse6.5中装birt。 MyEclipse6.5自带的是eclipse3.3,所以只能下载birt-report-framework-2_2_2.zip (下载地址:https://www.360docs.net/doc/db12620783.html,/birt/downloads/index2.2.2.php) 而birt-report-framework-2_3_0.zip是针对eclipse3.4的。 把下载下来的birt-report-framework-2_2_2.zip包解压,解压后的features文件夹下的所有文件拷贝到MyEclipse6.5安装目录下的..\myeclipse\eclipse\features 下,解压后的plugins文件夹下的所有文件拷贝到..\myeclipse\eclipse\plugins下。 重新启动MyEclipse就好了。

金额大写转换函数

金额大写转换函数 #region 金额大写转化 private static String[] Ls_ShZ = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖", "拾" }; private static String[] Ls_DW_Zh = { "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万" }; private static String[] Num_DW = { "", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万" }; private static String[] Ls_DW_X = { "角", "分" }; /// <summary> /// 金额小写转中文大写。 /// 整数支持到万亿;小数部分支持到分(超过两位将进行Banker舍入法处

Birt使用经验谈3

Birt使用经验谈 Chart图 Michael 2006-04-11 Jiabiao011@https://www.360docs.net/doc/db12620783.html, 前段时间都是写的都是关于一般报表的,在一些网上朋友的要求下,本文档就介绍一下关于chart图吧。这段时间也比较忙,也没时间去深入。在这里也只是简单的介绍一下chart的设计步骤。 1.环境:在第一篇文档中已经描述了,在此就不用多说了。 2.chart报表的简单例子 步骤如下: ●新建一个空白报表,名为:chart_sample.rptdesign ●新建一个(jdbc)数据源. ●新建一个数据集,sql脚本如下:(SELECT SUM(se.AMOUNT) AS AMOUNT ,DATE_FORMAT(se.OPER_DATE, '%Y-%m') as OPER_DATE,se.IN_OR_OUT as TYPE FROM mms_storage_entry se,mms_storage s WHERE s.ID = se.STORAGE_ID AND se.IN_OR_OUT='2'AND DATE_FORMAT(se.OPER_DATE, '%Y-%m')>=DATE_FORMAT('2005-01-01', '%Y-%m')GROUP BY DATE_FORMAT(se.OPER_DATE, '%Y-%m'))UNION(SELECT SUM(se.AMOUNT) AS AMOUNT ,DATE_FORMAT(se.OPER_DATE, '%Y-%m') as OPER_DATE,se.IN_OR_OUT as TYPE FROM mms_storage_entry se,mms_storage s WHERE s.ID = se.STORAGE_ID AND se.IN_OR_OUT='1'AND DATE_FORMAT(se.OPER_DATE, '%Y-%m')>=DATE_FORMAT('2005-01-01', '%Y-%m')GROUP BY DATE_FORMAT(se.OPER_DATE, '%Y-%m')) 这个脚本是我在一个项目中用的,改了一些数据,就载过来用了:)。 点击左树下的”计算列”,输入列名称\数据类型及表达式,表达式如: var type; if(row["TYPE"]=='1'){ type='入库'; } else { type='出库'; } 这样才能看到如下图中的出库和入库,当然也可以不用设置计算列.

BIRT报表参数详解

在使用birt报表的时候感觉页面的BIRT Report Viewer头标题没有用,想去掉在网上一查原来有详细的参数设置,看来birt的功能还是很强大啊。现在转帖如下: BIRT作为一款功能强大的开源报表工具,其版本的升级更新速度也非常快,从1.0到2.0,一直到最新的2.2.1版本,无论从功能上还是性能上都得到了极大的提高和扩充。BIRT也提供了一个标准的J2EE实现组件,可以发布到支持J2EE应用的web server服务器上,可以对生成的报表进行预览等操作。在大家使用BIRT Viewer的时候,可能会对它日益纷繁的参数设置如云里雾里,在网上论坛里也有很多人碰到这样哪样的问题,同时官方的文档也不细致不全。所以我就对这些参数进行了一个简单系统的总结,希望能对大家的BIRT开发有所帮助。这些参数以2.2.1版本为准,请大家特别注意。 1.Servlet模式说明 查看BIRT Viewer自带的web.xml文件,可以看到有以下几个pattern: 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获取报表内容,而preview直接输出到浏览器。如果要支持分页,用户需要在URL上定义__page和__pagerange参数,这两个参数也会在后面详细说明。需要特别说明的是,在这几种预览模式中,preview的速度是最快的。 document---该模式主要是为了从report design文件生成report document文件。用户可以在URL上提定document文件生成存放的路径(存放在server端),如果未指定,会直接生成rptdocument发送到客户端浏览器,用户可以下载到客户端。 output---该模式类似于frameset,会自动生成report document文件(预览report design 文件),区别在于output不采用Ajax,而是将生成的报表内容直接输出到浏览器。 parameter---该模式主要用于生成一个参数对话框,一般用户不常用,用户可以直接通过提供的JSP Tag--parameterPage去实现参数对话框,不需要直接调用。 download---用于导出报表数据为CSV格式,当你使用frameset工具条里的导出数据功能时,会用到这个模式。 2.web.xml里的参数设置 web.xml文件里有许多参数,用户应该根据自已的需求出发对这些参数有一个深入的了解。

birt报表入门教程之图表报表

birt报表入门教程之图表报表 图表报表 图形报表是非常常见的一种报表样式,用于直观地表现数据规律。常用的类型包括:柱状图、饼图、折线图、甘特图、雷达图等。Eclipse的Birt插件为我们提供了多种图表的表现形式。 这里我们利用3.6的交叉报表,为它做一张简单直观的柱形图。 为报表插入图表 本例我们直接利用3.6交叉报表的数据集,直接在3.6所创建的报表上插入图表。在选用板“Palette”视图中拖拽一个“Chart”至布局编辑器中交叉报表“Cross Tab”的下方。 设定图表属性 1.选择图表类型 进行上一步拖拽之后,会弹出如下窗口:在此窗口我们首先要进行图表基本属性的设定。系统提供给我们有13种可供选择的图表,这里我们选择第一种“Bar”即柱形图。 在窗口中部右方的“Select Subtype”部分有三种类型可供我们选择,这里我们选择第一个,其他的数据设定:Dimension:2D With Depth(设定图形维度) Output Format:SVG(设定输出图表的格式)Multiple Y Axis:none

选择“Next”进入下一步:

2.设定好图表基本类型之后,进行图表的数据设定。窗口哦界面如上图。 在窗口中部的Select Data Set中,选择Use Data Set,然后从它的下拉菜单中选择我们所创建的唯一数据集contract,此时,Data Preview窗口出现了数据集中的各个数据项:

3.将数据项中的AMOUNT拖拽至左上方“Value(Y)Series”中的“∑” 框内。表示在图表的Y轴的变量设定为amount变量。(也可以通过点击“∑”框左边的函数符号来进行设定。点击进入后,在下方三个小窗口依次选择“Available Column Bindings”→“Chart-New Chart”→“AMOUNT”,点击“AMOUNT”时进行双击。或者可以直接在编辑窗口输入“row["AMOUNT"]”即可。点击“Ok”完成)

金额大小写转换

金额大小写转换 第一招:釜底抽薪——自动更正法 如果需要重复的输入一个大写数字金额,可以采用自动更正的方法。例如要重复输入“肆仟叁佰伍拾元零伍分”,可以先输入“肆仟叁佰伍拾元零伍分”并选中它,然后执行菜单“工具→自动更正选项”打开“自动更正”对话框,在“替换”下的框内输入“4350.05”并单击“添加”按钮确定后退出,以后直接输入“4350.05”后回车即可快速得到“肆仟叁佰伍拾元零伍分”。 第二招:一劳永逸——编制自动宏 如果有许多小写金额要变成大写的话,用上面的自动更正的方法需要定义很多自动更正项,显然也比较麻烦,其实只需要编辑一个宏就能做到“一劳永逸”了。启动Word后按下A lt+F11组合键,在打开的工程窗口左侧双击“ThisDocument”进入代码编写窗口,在代码编辑窗口中输入如下代码: Option Explicit Sub 小写金额变大写() Dim Numeric As Currency, IntPart As Long, DecimalPart As Byte, MyField As Field, Lable As String Dim Jiao As Byte, Fen As Byte, Oddment As String, Odd As String, MyChinese As String Const ZWDX As String = "壹贰叁肆伍陆柒捌玖零" '定义一个中文大写汉字常量 On Error Resume Next '错误忽略 With Selection Numeric = VBA.Round(VBA.V al(.Text), 2) '四舍五入保留小数点后两位 '判断是否在表格中 If .Information(wdWithInTable) Then _ .MoveRight unit:=wdCell Else .MoveRight unit:=wdCharacter '对数据进行判断,是否在指定的范围内 If VBA.Abs(Numeric) > 2147483647 Then MsgBox "数值超过范围!", _ vbOKOnly + vbExclamation, "Warning": Exit Sub IntPart = Int(VBA.Abs(Numeric)) '定义一个正整数 Odd = VBA.IIf(IntPart = 0, "", "圆") '定义一个STRING变量 '插入中文大写前的标签 Lable = VBA.IIf(Numeric = VBA.Abs(Numeric), "人民币金额大写:", "人民币金额大写:负") '对小数点后面二位数进行择定 DecimalPart = (VBA.Abs(Numeric) - IntPart) * 100 Select Case DecimalPart Case Is = 0 '如果是0,即是选定的数据为整数 Oddment = VBA.IIf(Odd = "", "", Odd & "整") Case Is < 10 '<10,即是零头是分 Oddment = VBA.IIf(Odd <> "", "圆零" & VBA.Mid(ZWDX, DecimalPart, 1) & "分", _ VBA.Mid(ZWDX, DecimalPart, 1) & "分") Case 10, 20, 30, 40, 50, 60, 70, 80, 90 '如果是角整 Oddment = "圆" & VBA.Mid(ZWDX, DecimalPart / 10, 1) & "角整" Case Else '既有角,又有分的情况

Eclipsebirt使用说明中文

Birt使用说明

目录 一、前言 (1) 二、相关软件 (1) 1.1、BIRT (2) 1.2、GEF和EMF (3) 三、Birt的安装和配置 (4) 四、使用说明 (5) 4.1、创建项目 (5) 4.2、创建第一个报表 (7) 4.2.1、创建一个空白报表 (7) 4.2.2、设置数据集参数 (9) 4.2.3、设计报表 (14) 4.3、报表中的参数 (26) 4.3.1、静态标量参数 (27) 4.3.2、动态标量参数 (29) 五、应用系统的结合 (31)

一、前言 公司的一个Java语言的B/S架构项目中需要实现大量的文字报表和图像报表的功能,以前使用CSS、JS和JfreeChart等技术,只能实现简单的报表,很难达到现在需求,于是我研究了几个开源免费的报表工具,通过网上的评价,发现了Birt有以下几点优点: 1、开发方便,Birt是Eclipse的一个插件可以很好的集成在Eclipse中,图形编辑框架下可以在几分钟之内做出一个报表。 2、可以很方便地在一个报表中混合展现概要数据和详细数据。 3、操作界面友好大方。 4、提供了强大灵活的样式定义,对于属性CSS的设计人员来说,应该可以设计出相当出色的报表样式。 5、集成在Eclipse中,不用再开启别报表开发工具窗口,对于习惯于Eclipse开发的程序员来说这点非常重要。 6、Birt的本地化做的很好,安装以后操作界面就是中文的(这点我在使用过程中没有充分体现,我使用了Birt的中文语言包)。 7、开源的报表产品,有源代码,可以进行深层的定制开发。 8、生成的报表完全是XML格式,扩展性好。 9、容易和应用系统结合。 10、最重要一点是开源免费的(我穷啊)。 根据这几个优点,我决定研究Birt,通过几天查找资料和自己的摸索,心中总算有些小的体会。由于习惯与Eclipse3.2版本,所以我使用了2.1.3版本的Birt,现在最新版本已经是2.3以上版本了,就是这个原因网上很多资料都不是很适合这个版本,所以我走了很多弯路,希望看到此文档的人能比我少走弯路,这也是我写这个文档的原因之一。 二、相关软件 相关的软件分别为: Java 1.4.2/1.5 JDK/JRE Eclipse-SDK-3.2.0

birt配置参数详解

BIRT参数设置详解 2010-08-25 16:30 在使用birt报表的时候感觉页面的 BIRT Report Viewer头标题没有用,想去掉在网上一查原来有详细的参数设置,看来birt的功能还是很强大啊。现在转帖如下: BIRT作为一款功能强大的开源报表工具,其版本的升级更新速度也非常快,从1.0到2.0,一直到最新的2.2.1版本,无论从功能上还是性能上都得到了极大的提高和扩充。BIRT也提供了一个标准的J2EE实现组件,可以发布到支持J2EE 应用的web server服务器上,可以对生成的报表进行预览等操作。在大家使用BIRT Viewer的时候,可能会对它日益纷繁的参数设置如云里雾里,在网上论坛里也有很多人碰到这样哪样的问题,同时官方的文档也不细致不全。所以我就对这些参数进行了一个简单系统的总结,希望能对大家的BIRT开发有所帮助。这些参数以2.2.1版本为准,请大家特别注意。 1. Servlet模式说明 查看BIRT Viewer自带的web.xml文件,可以看到有以下几个pattern: 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获取报表内容,而preview直接输出到浏览器。如果要支持分页,用户需要在URL上定义__page和 __pagerange参数,这两个参数也会在后面详细说明。需要特别说明的是,在这几种预览模式中,preview的速度是最快的。 document --- 该模式主要是为了从report design文件生成report document 文件。用户可以在URL上提定document文件生成存放的路径(存放在server端),如果未指定,会直接生成 rptdocument发送到客户端浏览器,用户可以下载到客户端。 output --- 该模式类似于frameset,会自动生成report document文件(预览report design文件),区别在于output不采用Ajax,而是将生成的报表内容直接输出到浏览器。

birt教程之交叉报表

birt教程之交叉报表 交叉报表 构建数据源 方法同上。 构建数据集 1.在定义好数据集的基本信息之后,进入SQL SELECT语句查询界面,输入如下SQL语句,进行数据集的创建: select EBANK.CUSTOMER.CUSTOMER_NAME, EBANK.PRODUCT.PRODUCT_NAME,EBANK.CONTRACTSUM.* from EBANK.CUSTOMER,EBANK.PRODUCT,EBANK.CONTRACTSUM where EBANK.CONTRACTSUM.CUSTOMER= EBANK.CUSTOMER.CUSTOMER_ID and EBANK.CONTRACTSUM.PRODUCT= EBANK.PRODUCT.PRODUCT_ID 2.如果创建正确,在结果预览窗口“Preview Relusts”中将看到一下信息:

点击“Ok”完成数据集的创建。 在报表中加入交叉报表 1.同上例,先在布局编辑器中建立一个1列2行的Grid。 2.从选用板“Palette”视图中拖拽一个“Cross Tab”至第二行的网格中。 在布局编辑器中可以看到我们创建的Cross Tab的样式。 数据准备 1.选择数据资源管理器“Data Explorer”。右键单击“Data Cubes”,选择“New Data Cube”,进入如下交叉表数据编辑界面: 2.默认选择的是“Dayaset”,Name:为Cube命名,Customer Cube Primery dataset:选择相关的数据集。打开下拉菜单选择之前建立的数据

集contract 3.在左边的主菜单中选择第二项“Groups and Summeries”,出现如下窗口(),在将Available Fields中的CUSTOMER_NAME拖拽到右边Groups (Dimensions)中标有“(Drop a field here to create a group)”的地方,如下图。

birt动态分组报表制作

1 BIRT报表开发环境准备 (2) 1.1 BIRT报表开发准备 (2) 1.2 建立Web Project (2) 1.3 配置交叉报表数据源 (5) 1.3.1 建立公共资源的文件夹 (5) 1.3.2 建立公共资源Library (6) 2 动态分组交叉报表 (10) 2.1 建立报表文件夹 (10) 2.2 建立报表文件 (11) 2.3 复用报表数据源 (12) 2.4 配置交叉报表结果集 (13) 2.5 配置交叉报表分组字段 (16) 2.5.1 新建Data Cuber (16) 2.5.2 新建Groups (17) 2.6 配置交叉报表求和字段 (18) 2.7 交叉报表表样制作 (19) 2.7.1 新建Cross Tab (19) 2.7.2 完成报表表样制作 (20) 2.8 报表分页实现 (20) 2.9 预览交叉报表 (20) 3 部署交叉报表 (21) 4 运行交叉报表 (21)

1BIRT报表开发环境准备 1.1 BIRT报表开发准备 (1)、Ecplise:这里我使用的是Eclipse Platform Version: 3.6.2。 (2)、BIRT插件:可以通过Ecplise中的Install New Software 添加Birt插件。插件地址:(3)、Tomcat:这里我使用的是apache-tomcat-6.0.16 1.2 建立Web Project (1)、新建Web Project 为了体现BIRT与实际应用项目相结合的特点,首先建立一个Web Project,工程命名为myReport。 然后单击“Next”,出现下图:

birt报表初级教程之嵌套报表

birt报表初级教程之嵌套报表 嵌套报表 嵌套报表其实是一种设计技巧的应用,类似编码过程中的模块化设计。当报表的复杂程度让设计者开始觉得逻辑混乱的时候,可以使用嵌套报表设计方法,将报表拆分为多个不同的设计页面,然后使用一个总的页面将这些设计页面整合起来展现。 此外,嵌套报表有时候也会用于主从结构的实现,通过逐层嵌套,可以实现无限层次的主从结构数据展现。 本例,我们将每个客户的信息包括客户表中基本的信息以及他们的订单信息,在同一张表中按客户一一列出来,所使用的就是嵌套报表。 报表名我们定为:nestingTab.rptdesign 构建数据源 本例我们使用BIRT自带的数据源,在新建数据源选择数据源类型为默认的第一项:Classic Model Inc,Sample Database 数据库驱动类别;org.eclipse.birt.report.data.oda.sampledb.Driver(Classic Models Inc.SampleDB Driver);URL:jdbc:classicmodels:sampledb 构建数据集 本例我们需要建立2个数据集: 1.建立数据集payments,所用SQL语句:(这里我们加入条件选择订单大于150000) select CUSTOMERNUMBER,sum(AMOUNT)amount from CLASSICMODELS.PAYMENTS group by CUSTOMERNUMBER having sum(AMOUNT)>150000 order by amount desc 2.建立数据集customers:所用SQL语句: select*

Excel中金额大小写转换(四舍五入都OK)

Excel中金额大小写转换 编制工程造价很有用 编制EXCEL财务表也很有用 Excel中金额大小写转换函数[=ntoc(单元格)] 一、使用加载宏方法:对于有四舍五入都没问题啊 “工具栏”→“宏”→“Visual Basic编辑器”,在“Visual Basic编辑器”中顶部选“插入”→“模块”,在“模块”对话框中选“通用”,并在编辑区域内粘贴以下内容: Function NtoC(n) 'n as single Const cNum = "零壹贰叁肆伍陆柒捌玖-万仟佰拾亿仟佰拾万仟佰拾元角分" Const cCha = "零仟零佰零拾零零零零零亿零万零元亿万零角零分零整-零零零零零亿万元亿零整整" NtoC = "" n = Round(n, 2) sNum = Trim(Str(Int(n * 100))) For i = 1 To Len(sNum) '逐位转换 NtoC = NtoC + Mid(cNum, (Mid(sNum, i, 1)) + 1, 1) + Mid(cNum, 26 - Len(sNum) + i, 1) Next For i = 0 To 11 '去掉多余的零 NtoC = Replace(NtoC, Mid(cCha, i * 2 + 1, 2), Mid(cCha, i + 26, 1)) Next End Function 然后单击“保存”,关闭“Visual Basic编辑器”,回到“工作表1”,输入函数“=NtoC(单元格)”即可。例如在单元格A1输入:A1=222, 在单元格A2输入:A2=NTOC(A1) 即可,这样A1单元格输入的数变化,A2单元格的大写自动变化。A2单元格最好进行单元锁定。

BIRT交叉表用法

Birt2.2M6 的CorssTab(交叉表)的用法 1什么是交叉表 首先你要知道什么是交叉表,又是在什么情况下需要用交叉表。 “交叉表”对象是一个网格,用来根据指定的条件返回值。数据显示在压缩行和列中。这种格式易于比较数据并辨别其趋势。它由三个元素组成: ◆行 ◆列 ◆摘要字段 我找了一副图表,用以说明交叉表 2创建交叉表步骤 Birt 2.2M6首次出现了OLAP Cube功能,创建交叉表分为三步 ◆创建Cube ◆创建CrossTab ◆把Cube的维度和度量拖到相应的地方。 2.1选择Cube的数据集 BIRT的数据立方体(Cube)是基于数据集的。建一个Cube首先就是要选择Cube的数据集,所以先创建自己的数据源和数据集。本例中我们建了一个名为crossTabDataSet 的数据集,数据集的预览如下图所示:

2.2创建Cube 在Data Exployer页的Cubes下面增加一个Cube,本例中,我们将Cube命名为TestCube,数据集选择我们刚才新建的crossTabDataSet。 2.3设置Cube的Group Group的设置页面如下:

把我们需要在交叉表的维度拖到Groups的Group下。(可以根据多个维度建立多个Group) 2.4设置CrossTab 然后,在设计面板中,双击Crosstab,在弹出的窗口中,选择我们刚才建好的Cube,点击‘Ok’。

设计页面上上出现了一个CrossTab的表格。 然后,打开DataExplor页,将Cube的维度和度量相应地拖放到规定的地方。如下图所示。 预览效果如下图所示: 至此,一个交叉表就完成了 2.5给交叉表设置附加列 如果想要出现本文开头的交叉表的效果(即:行小计和列小计计算结果),进行如下设

Excel中金额大小写转换

Excel中金额大小写转换 一、Excel中金额大小写转换公式 公式1: “=IF(ROUND(E19,2)=0,"",IF(ROUND(ABS(E19),2)>=1,TEXT(INT(ROUND(ABS(E19),2)),"[ DBNum2]")&"元","")&IF(RIGHT(TEXT(E19,".00"),2)*1=0,"整 ",IF(RIGHT(TEXT(E19,".00"),4)*1>=1,IF(RIGHT(TEXT(E19,".00"),2)*1>9,"","零 "),IF(ROUND(ABS(E19),2)>=1,"零 ",""))&IF(RIGHT(TEXT(E19,".00"),2)*1>9,TEXT(LEFT(RIGHT(TEXT(E19,".00"),2)),"[DBNu m2]")&"角 ","")&IF(RIGHT(TEXT(E19,".00"))*1>0,TEXT(RIGHT(TEXT(E19,".00")),"[DBNum2]")&"分","整")))” 公式2:“=IF(F4<1,IF(F4<0.1,TEXT(INT(F4*100),"[DBNum2]G/通用格式")&"分 ",IF((INT(F4*100)-INT(F4*10)*10=0),TEXT(INT(F4*10),"[DBNum2]G/通用格式")&"角整",TEXT(INT(F4*10),"[DBNum2]G/通用格式")&"角 "&TEXT(INT(F4*100)-INT(F4*10)*10,"[DBNum2]G/通用格式")&"分 ")),TEXT(INT(F4),"[DBNum2]G/通用格式"&"元 ")&IF((INT(F4*10)-INT(F4)*10)=0,IF((INT(F4*100)-INT(F4*10)*10)=0,"","零 "),IF((INT(F4*0.1)-INT(F4)*0.1)=0,"零","")&TEXT(INT(F4*10)-INT(F4)*10,"[DBNum2]G/通用格式")&"角")&IF((INT(F4*100)-INT(F4*10)*10)=0,"整 ",TEXT(INT(F4*100)-INT(F4*10)*10,"[DBNum2]G/通用格式")&"分"))” 公式3:“=IF(B10<1,IF(B10<0.1,TEXT(INT(B10*100),"[DBNum2]G/通用格式")&"分 ",IF((INT(B10*100)-INT(B10*10)*10=0),TEXT(INT(B10*10),"[DBNum2]G/通用格式")&"角整",TEXT(INT(B10*10),"[DBNum2]G/通用格式")&"角 "&TEXT(INT(B10*100)-INT(B10*10)*10,"[DBNum2]G/通用格式")&"分 ")),TEXT(INT(B10),"[DBNum2]G/通用格式"&"元 ")&IF((INT(B10*10)-INT(B10)*10)=0,IF((INT(B10*100)-INT(B10*10)*10)=0,"","零 "),IF((INT(B10*0.1)-INT(B10)*0.1)=0,"零 ","")&TEXT(INT(B10*10)-INT(B10)*10,"[DBNum2]G/通用格式")&"角 ")&IF((INT(B10*100)-INT(B10*10)*10)=0,"整 ",TEXT(INT(B10*100)-INT(B10*10)*10,"[DBNum2]G/通用格式")&"分"))” 二、Excel中金额大小写转换函数[=ntoc(单元格)] 使用加载宏方法: “工具栏”→“宏”→“V isual Basic编辑器”,在“Visual Basic编辑器”中顶部选“插入”→“模块”,在“模块”对话框中选“通用”,并在编辑区域内粘贴以下内容: Function NtoC(n) 'n as single Const cNum = "零壹贰叁肆伍陆柒捌玖-万仟佰拾亿仟佰拾万仟佰拾元角分" Const cCha = "零仟零佰零拾零零零零零亿零万零元亿万零角零分零整-零零零零零亿万元亿零整整" NtoC = "" sNum = Trim(Str(Int(n * 100)))

相关文档
最新文档