热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

BIRT说

BIRT使用说明书(Vx.x)北京神州数码思特奇信息技术股份有限公司二〇一〇年四月1BIRT介绍42应用集成52.1添加Jar包、配置web

 

 

 

 

BIRT

使用说明书

(Vx.x)

 

 

 

北京神州数码思特奇信息技术股份有限公司

二〇一〇年四月


 

1 BIRT介绍... 4

2 应用集成... 5

2.1 添加Jar包、配置web.xml. 5

2.2 报表查询界面集成... 15

2.2.1 集成EXCEL报表工具... 16

2.3 对BIRT显示界面的一些修改... 17

2.4 备忘事项... 20

3 报表配置... 22

3.1报表模板的创建... 28

3.2使用公用的数据源... 35

3.3参数的配置... 39

3.3.1 配置?形式的参数... 39

3.3.2 配置脚本形式的参数... 43

3.1 隔行高亮显示... 44

3.2 引用定义好的CSS样式... 46

3.3 图表配置... 49

3.4 字段收敛(根据用户group_id隐藏字段) 55

3.4.1 数据集beforeOpen脚本中增加... 56

3.4.2 修改报表Sqlquery. 56

3.4.3 修改报表模板... 58

4 尚未解决问题列表... 59

4.1 表头固定... 59

4.2 Word导出乱码... 59

 

1 BIRT介绍

BIRT (Business Intelligence and Reporting Tools), 是为 Web 应用程序开发的基于 Eclipse 的开源报表系统,特别之处在于它是以 Java 和 J2EE 为基础。BIRT 有两个主要组件:基于 Eclipse 的报表设计器,以及部署到应用服务器上的运行时组件。BIRT 也提供了图表引擎让你能为应用增加图表。

 

扩展阅读:

1.www.eclipse.org/birt

2.www.birt-exchange.com

3.www.actuate.com

4.www.actuatechina.com

目前最新版本为2.5,但新的版本可能存在问题,也没有前人的经验借鉴,所以我们使用的版本是2.3.2。

使用前请先下载birt-rcp-report-designer-2_3_2(eclipse报表设计器)、birt-runtime-2_3_2_2(BIRT报表运行环境)

 

2 应用集成

BRIT运行环境要求

Java 1.5 JDK/JRE以上

Weblogic9以上

 

2.1 添加Jar包、配置web.xml

环境为weblogic10,jdk1.6

应用为渠道佣金系统WEB应用

 

birt-runtime-2_3_2中WebViewerExample

copy WebViewerExample\WEB-INF\platform 到当前工程WEB-INF下

copy birt.tld 到当前工程WEB-INF\tld下

copy WebViewerExample\WEB-INF\lib 到当前工程WEB-INF\lib下

copy WebViewerExample\WEB-INF\server-config.wsdd 到当前工程WEB-INF下

copy WebViewerExample\WEB-INF\viewer.properties 到当前工程WEB-INF下

 

copy js.jar 到weblogic/wlserver_10.3/server/lib/下

 

编辑chn_domain/bin/setDomainEnv.sh 修改CLASSPATH,增加${WL_HOME}/server/lib/js.jar

CLASSPATH="${WL_HOME}/server/lib/js.jar${PRE_CLASSPATH}${CLASSPATHSEP}${WEBLOGIC_CLASSPATH}${CLASSPATHSEP}${POST_CLASSPATH}${CLASSPA

THSEP}${WLP_POST_CLASSPATH}"

 

copy WebViewerExample\webcontent\birt 到当前工程webRoot规下

copy WebViewerExample\report、logs、documents、scriptlib 到刚copy过来的webRoot\birt下

 

编辑web.xml

       

       

       

       

 

       

       

       

       

       

       

                BIRT_VIEWER_WORKING_FOLDER

                birt/model

       

       

       

       

                BIRT_VIEWER_DOCUMENT_FOLDER

                birt/documents

       

 

       

       

                WORKING_FOLDER_ACCESS_ONLY

                true

       

 

       

       

                BIRT_VIEWER_IMAGE_DIR

                birt/report/images

       

 

       

       

                BIRT_VIEWER_LOG_DIR

                birt/logs

       

 

       

       

                BIRT_VIEWER_LOG_LEVEL

                WARNING

       

 

       

       

                BIRT_VIEWER_SCRIPTLIB_DIR

                birt/scriptlib

       

       

       

       

                BIRT_RESOURCE_PATH

                birt

       

 

       

       

                BIRT_VIEWER_MAX_ROWS

               

       

 

       

       

                BIRT_VIEWER_MAX_CUBE_ROWLEVELS

               

       

       

                BIRT_VIEWER_MAX_CUBE_COLUMNLEVELS

               

       

 

       

       

                BIRT_VIEWER_CUBE_MEMORY_SIZE

               

       

       

       

       

                BIRT_OVERWRITE_DOCUMENT

                true

       

 

       

       

                BIRT_VIEWER_CONFIG_FILE

                WEB-INF/viewer.properties

       

 

       

       

                BIRT_VIEWER_PRINT_SERVERSIDE

                ON

       

 

       

       

                HTML_ENABLE_AGENTSTYLE_ENGINE

                true

       

       

       

 

 

       

       

            ViewerFilter

        org.eclipse.birt.report.filter.ViewerFilter

       

 

 

   

        ViewerFilter

        ViewerServlet

   

   

        ViewerFilter

        EngineServlet

       

 

     

       

                org.eclipse.birt.report.listener.ViewerServletContextListener

       

 

 

       

       

                org.eclipse.birt.report.listener.ViewerHttpSessionListener

       

       

         

       

                ViewerServlet

                org.eclipse.birt.report.servlet.ViewerServlet

       

 

       

       

                EngineServlet

                org.eclipse.birt.report.servlet.BirtEngineServlet

       

 

 

       

                ViewerServlet

                /frameset

       

       

       

                ViewerServlet

                /run

       

       

       

                EngineServlet

                /preview

       

 

       

                EngineServlet

                /download

       

 

       

                EngineServlet

                /parameter

          

 

       

                EngineServlet

                /document

          

 

       

                EngineServlet

                /output

          

       

       

                EngineServlet

                /extract

         

 

 

        /birt.tld

        /WEB-INF/tld/birt.tld

   

 

2.2 报表查询界面集成

 

BIRT参数输入界面

 

BIRT的参数输入界面为弹出页面,并且很多个性化的参数输入类型不能满足,如日期框营销架构、级联参数等。所以就使用我们原有EXCEL报表工具输入参数的页面,通过URL传参。

 

2.2.1 集成EXCEL报表工具

新增java类

sitech/channel/common/DataConnection.java //数据库操作

sitech/channel/common/ExcelBean.java //Excel操作

sitech/channel/common/Item.java //简单实体类

sitech/channel/common/ToolsOfSystem.java //工具类

sitech/channel/common/WhereTable.java //简单实体类

 

sitech/channel/sireport/action/ReportAction.java //strutsAction

sitech/channel/sireport/service/QryWhereBean.java //Excel报表Bean

sitech/channel/sireport/service/RepQueryBean.java //Excel报表Bean

 

DataConnection.properties //数据库链接配置文件

 

/gdchn/chnweb/WEB-INF/sc-sys.xml

 

   

       

                    type="sitech.channel.sireport.action.ReportAction"

              validate="false" parameter="command"             

                  scope="request">    

                 

            

   

 

新增

/gdchn/chnweb/report目录

/gdchn/chnweb/activeX 目录

/gdchn/chnweb/ext目录 //ext js相关文件

 

2.3 对BIRT显示界面的一些修改

 

/gdchn/chnweb/birt/pages/layout/FramesetFragment.jsp

                       

 

/gdchn/chnweb/birt/pages/control/ToolbarFragment.jsp

 

                                       

 

/gdchn/chnweb/birt/pages/control/NavigationbarFragment.jsp

 

                if( false)//attributeBean.isShowNavigationbar( ) )

                {

        %>

                HEIGHT="25px"

        <%

                }

                else

                {

        %>

                style&#61;"display:none"

        <%

                }

        %>  

 

/gdchn/chnweb/birt/styles/style.css

/******************************************************************************

 * Toolbar

 ******************************************************************************/

.birtviewer_toolbar

{

        height:26px;

        background-color:#f0f4f5;

        font-family:Verdana;

        font-size:8pt;

        border-top-width:1px;

        border-top-style:solid;

        border-top-color:#808080;

        border-bottom-width:1px;

        border-bottom-style:solid;

        border-bottom-color:#808080;

}

 

/******************************************************************************

 * Navigation bar

 ******************************************************************************/

.birtviewer_navbar

{

        height:26px;

        background-color:#f0f5f5;

        font-family:Verdana;

        font-size:8pt;

        border-left-color:#808080;

        border-left-style:solid;

        border-left-width:1px;

}

 

 

2.4 备忘事项

------------配置渠道菜单时&,替换为%26

chnnew/sireport.do?command&#61;query%26queryid&#61;1000001

 

EXT以UTF-8编码

修改过滤器&#xff0c;sitech.channel.framework.util.CharacterEncodingFilter

增加

                if("/sireport.do".equals(request.getRequestURI())){

                        request.setCharacterEncoding("UTF-8");

                }

 

3 报表配置

 

 

1.新建一个报表模板&#xff1a;点击File--New File--New Report弹出对话框如下图&#xff1a;

File name给报表模板命名&#xff0c;保存在一个路径下&#xff0c;可以去掉对号&#xff0c;自定义保存的路径。

点击 Next>

 

2.点击Next后进入&#xff0c;报表模板类型的选择&#xff0c;一般情况下是选择Blank Report&#xff08;空白的模板类型&#xff09;&#xff0c;这样方便自己来设计模板的样式。选择Blank Report后点击Finish

 

3.一个命名为new_report_8的空白的报表模板已经创建完成&#xff0c;接下来要对这个报表进行数据源的配置&#xff0c;选择Data Explorer&#xff08;数据资源管理的标签&#xff09;

 

4.在Data Sources右键点击选择New Data Source,进行数据源的配置&#xff0c;以创建JDBC Data Source 为例进行说明&#xff0c;点击Next

 

5.点击Next后&#xff0c;对数据源进行配置&#xff0c;点击Manage Drivers 可以加载数据库驱动文件。配置完成后点击OK&#xff0c;一个数据源建立完成。

 

6.数据源建立完成&#xff0c;开始建立数据集&#xff0c;先选择刚才创建好的数据源名字 Data Souce&#xff0c;

对数据集进行命名:TestDS&#xff0c;点击Next>

 

 

 

7.点击Next> &#xff0c;在左边选择刚才定义好的数据源Data Source 筛选出要操作的表&#xff0c;可进行拖拽&#xff0c;也可以自己拼写SQL语句。然后点击OK。

 

 

8.一个数据集建立完成了&#xff0c;可以点击 Preview Results 进行预览

下面是预览的结果&#xff0c;可以查看输出的字段

 

9.建立好了数据集&#xff0c;接下来是要进行参数的配置&#xff0c;一张报表&#xff0c;一般情况下会输入多个参数&#xff0c;来查询出想得到的结果。

 

3.1报表模板的创建

 

1.新建一个报表模板&#xff1a;点击File--New File--New Report弹出对话框如下图&#xff1a;

File name给报表模板命名&#xff0c;保存在一个路径下&#xff0c;可以去掉对号&#xff0c;自定义保存的路径。

点击 Next>

 

 

2.点击Next后进入&#xff0c;报表模板类型的选择&#xff0c;一般情况下是选择Blank Report&#xff08;空白的模板类型&#xff09;&#xff0c;这样方便自己来设计模板的样式。选择Blank Report后点击Finish

 

3.一个命名为new_report_8的空白的报表模板已经创建完成&#xff0c;接下来要对这个报表进行数据源的配置&#xff0c;选择Data Explorer&#xff08;数据资源管理的标签&#xff09;

 

4.在Data Sources右键点击选择New Data Source,进行数据源的配置&#xff0c;以创建JDBC Data Source 为例进行说明&#xff0c;点击Next

 

5.点击Next后&#xff0c;对数据源进行配置&#xff0c;点击Manage Drivers 可以加载数据库驱动文件。配置完成后点击OK&#xff0c;一个数据源建立完成。

 

6.数据源建立完成&#xff0c;开始建立数据集&#xff0c;先选择刚才创建好的数据源名字 Data Souce.

对数据集进行命名:TestDS&#xff0c;点击Next>

 

 

 

7.点击Next> &#xff0c;在左边选择刚才定义好的数据源Data Source 筛选出要操作的表&#xff0c;可进行拖拽&#xff0c;也可以自己拼写SQL语句。然后点击OK。

 

 

8.一个数据集建立完成了&#xff0c;可以点击 Preview Results 进行预览

下面是预览的结果&#xff0c;可以查看输出的字段

 

 

3.2使用公用的数据源

 

Birt也可以不需要没张报表模板都建立数据源&#xff0c;可以创建一个公用的数据源&#xff0c;使每个报表模板都引用这个数据源。首先来创建一个公用的数据源。

1.点击File>>New>>New Library&#xff0c;进入下面的换面&#xff0c;然后给公用数据源进行命名&#xff0c;选择公用数据源的存储路径&#xff0c;一般情况与报表模板存储在一个路径下。然后点击Finish.

 

2.进行公用数据源的配置&#xff0c;步骤与在报表模版中配置数据源是一样的。

首先在Data Sources右键点击选择New Data Source,进行数据源的配置&#xff0c;以创建JDBC Data Source 为例进行说明&#xff0c;点击Next

 

点击Next后&#xff0c;对数据源进行配置&#xff0c;点击Manage Drivers 可以加载数据库驱动文件。配置完成后点击OK&#xff0c;一个数据源建立完成。这样一个公用的数据源就建立完成了。

 

3.公用的数据源已经创建完成&#xff0c;下面就要在报表模板中引用公用数据源&#xff0c;还是以之前创建好的报表模板new_report_8.rptdesign为例&#xff0c;把刚才制作好的公用数据源引用到new_report_8模板中。

(1)首先打开new_report_8.rptdesign&#xff0c;然后Window>>Show View>>Resource Exploer 打开资源管理面板&#xff0c;在下面的截图中可以看到&#xff0c;我们刚才建立的功用的数据源&#xff0c;new_library.rptlibrary,还可以看到&#xff0c;定义好的数据源test_Library

 

5.在test_Library上点击右键&#xff0c;选择Add to Report,这样就会把这个公用的数据源添加到报表模板中。

6.可以在下面的截图中看到&#xff0c;模板中有两个数据源&#xff0c;一个Data Source是之前我们在我们在报表模板中建立的&#xff0c;另一个 test_Library是引用自公用数据源

 

3.3参数的配置

下面介绍报表参数配置进行说明&#xff0c;参数的配置主要有两种形式&#xff0c;一个是?的形式&#xff0c;还有一种是利用script脚本进行参数的替换&#xff0c;下面分别说明

3.3.1配置?形式的参数

以new_report_8为例&#xff0c;使用之前在new_report_8建立好的数据集TestDS

打开TestDS数据集&#xff0c;使其引用test_Library数据源&#xff0c;替换了我们之前以用的Data Source数据源。

 

 

打开Query查询窗口&#xff0c;拼写SQL语句&#xff0c;?形式就是要查询时&#xff0c;输入的参数。

下面的两个参数&#xff0c;是需要从外面输入的&#xff0c;所以要对两个参数进行配置。

 

下面如图是要配置两个要输入的参数&#xff0c;进行查询&#xff0c;右键Report Parameters>>New Parameter

 

点击New Parameter,进入配置参数的界面&#xff0c;配置参数名称、参数类型、参数展示的形式&#xff0c;默认值等信息&#xff0c;如果参数不是必须填写的可以把IS Required的勾去掉。配置完成点击OK

 

 

为刚才数据集的两个参数已经配置好&#xff0c;如下图

 

接下来是让TestDS数据集引用配置好的两个参数&#xff0c;打开数据集TestDS

点击左侧Parameters>>New 把刚才配置好的两个参数引入进来&#xff0c;注意参数的顺序要与?号的顺序一致。这样?形式的参数就配置完成了。可以进行预览

 

 

 

 

 

 

3.3.2配置脚本形式的参数

还是引用上面的数据集&#xff0c;是以脚本替换的形式进行查询的&#xff0c;打开TestDS数据集然后进行SQL语句的拼写。

 

 

在刚才的SQL语句基础上多了一个条件&#xff0c;是rownum<&#61;

${rownum}是要在脚本中被替换的。在Parameters中配置rownum参数

 

下面进入script脚本中&#xff0c;选中TestDS,右侧报表工作区&#xff0c;点击script, BeforeOpen下编写脚本。Before Open表示在执行SQL语句之前进行了参数的替换。这样就可以脚本形式替换参数&#xff0c;就可以执行了。

 

 

3.1 隔行高亮显示

点击右侧报表配置工作区中的LayOutb标签&#xff0c;选中要高亮显示的行&#xff0c;一般是Table-Detail,选择Higthgts,点击Add

 

点击Add 弹出窗口进行配置如图进行配置&#xff1a;

 

3.2 引用定义好的CSS样式

显示出Outline,删除style下birt默认的样式&#xff0c;引用定义好的样式

 

然后右键 Styles>>Use CSS File&#xff0c;引用外部定义好的birt.css.

 

(1)表头如何引用样式&#xff1a;

选中Table-Header右键>>Style>>Apply Style>>table-th

 

(2)如何引用报表内容样式&#xff1a;

选中Table-Detail右键>>Style>>Apply Style>>tables-rows

 

(3)报表最后一样引用样式

选中Table-Footer右键>>Style>>Apply Style>>tables-last-row

 

(3)固定表头使其内容显示在一行

选中要固定的内容右键>>Style>>Apply Style>>tip

 

 

3.3 图表配置

表TEST_CHART

字段名

字段类型

是否可为空

YEARMONTH

VARCHAR2(6)

Y

TYPE

VARCHAR2(10)

Y

NUM

NUMBER(8)

Y

 

insert into TEST_CHART (YEARMONTH, TYPE, NUM)

values (&#39;200910&#39;, &#39;2G开户&#39;, 9000);

insert into TEST_CHART (YEARMONTH, TYPE, NUM)

values (&#39;200910&#39;, &#39;3G开户&#39;, 7500);

insert into TEST_CHART (YEARMONTH, TYPE, NUM)

values (&#39;200910&#39;, &#39;上网卡&#39;, 5700);

insert into TEST_CHART (YEARMONTH, TYPE, NUM)

values (&#39;200911&#39;, &#39;2G开户&#39;, 3000);

insert into TEST_CHART (YEARMONTH, TYPE, NUM)

values (&#39;200911&#39;, &#39;3G开户&#39;, 2500);

insert into TEST_CHART (YEARMONTH, TYPE, NUM)

values (&#39;200911&#39;, &#39;上网卡&#39;, 7700);

insert into TEST_CHART (YEARMONTH, TYPE, NUM)

values (&#39;200912&#39;, &#39;2G开户&#39;, 900);

insert into TEST_CHART (YEARMONTH, TYPE, NUM)

values (&#39;200912&#39;, &#39;3G开户&#39;, 750);

insert into TEST_CHART (YEARMONTH, TYPE, NUM)

values (&#39;200912&#39;, &#39;上网卡&#39;, 570);

insert into TEST_CHART (YEARMONTH, TYPE, NUM)

values (&#39;201001&#39;, &#39;2G开户&#39;, 9900);

insert into TEST_CHART (YEARMONTH, TYPE, NUM)

values (&#39;201001&#39;, &#39;3G开户&#39;, 9750);

insert into TEST_CHART (YEARMONTH, TYPE, NUM)

values (&#39;201001&#39;, &#39;上网卡&#39;, 9570);

insert into TEST_CHART (YEARMONTH, TYPE, NUM)

values (&#39;201002&#39;, &#39;2G开户&#39;, 2900);

insert into TEST_CHART (YEARMONTH, TYPE, NUM)

values (&#39;201002&#39;, &#39;3G开户&#39;, 2750);

insert into TEST_CHART (YEARMONTH, TYPE, NUM)

values (&#39;201002&#39;, &#39;上网卡&#39;, 2570);

insert into TEST_CHART (YEARMONTH, TYPE, NUM)

values (&#39;201003&#39;, &#39;2G开户&#39;, 9900);

insert into TEST_CHART (YEARMONTH, TYPE, NUM)

values (&#39;201003&#39;, &#39;3G开户&#39;, 9750);

insert into TEST_CHART (YEARMONTH, TYPE, NUM)

values (&#39;201003&#39;, &#39;上网卡&#39;, 9570);

commit;

 

新建数据集

 

 

 

 

 

 

 

选中数据集

 

 

 

 

 

 

 

 

修改markers大小为2

 

3.4 字段收敛(根据用户group_id隐藏字段)

以[ 2G发展量报表 ]为例

根据不同用户&#xff0c;判断是否隐藏后付费用户数

 

省中心用户

 

地市用户

 

 

表DFND_HIDDEN_COL&#xff1a;

字段名

字段类型

是否可为空

含义

FUNCTION_CODE

VARCHAR2(10)

N

功能代码

LOGIN_GROUP_ID

VARCHAR2(10)

N

登陆group_id

HIDDEN_SEQ1

NUMBER

Y

1为隐藏

HIDDEN_NOTE1

VARCHAR2(40)

Y

 

HIDDEN_SEQ2

NUMBER

Y

 

HIDDEN_NOTE2

VARCHAR2(40)

Y

 

HIDDEN_SEQ3

NUMBER

Y

 

HIDDEN_NOTE3

VARCHAR2(40)

Y

 

HIDDEN_SEQ4

NUMBER

Y

 

HIDDEN_NOTE4

VARCHAR2(40)

Y

 

HIDDEN_SEQ5

NUMBER

Y

 

HIDDEN_NOTE5

VARCHAR2(40)

Y

 

 

FUNCTION_CODE

LOGIN_GROUP_ID

HIDDEN_SEQ1

HIDDEN_NOTE1

HIDDEN_SEQ2

9445

16128

1

后付费发展数

 

 

3.4.1 数据集beforeOpen脚本中增加

this.queryText &#61; this.queryText.replaceAll("\\$\\{login_group_id\\}",params["loginGroupId"].value);

 

3.4.2 修改报表Sqlquery

新增红色字体部分

SELECT  aa.*, bb.hidden_seq1 from (

SELECT   d.GROUP_ID,

         CASE d.root_distance

            WHEN 1

               THEN SUBSTR (d.group_name, 5, 2)

            ELSE d.group_name

         END group_name,

         e.class_code, e.class_name, g.brand_type_name t0,

         SUM (pre_lucky) t1, SUM (pre_pop) t2, SUM (pre_up) t3,

         SUM (pre_other) t4, SUM (pre_tot) t5, SUM (after_world) t6,

         SUM (tot_2g) t7, d.queue_index, d.root_distance rd1,

         e.root_distance rd2,

         &#39;${login_group_id}&#39; login_group_id

    FROM pmrt.tb_rpt_2g_serv_day a,

         dchngroupmsg b,

         dchngroupinfo c,

         schnclassinfo f,

         schnbrandcode g,

         (SELECT b.GROUP_ID, a.group_name, a.queue_index, a.root_distance

            FROM dchngroupmsg a, dchngroupinfo b

           WHERE b.parent_group_id &#61; &#39;${parent_group_id}&#39;

             AND b.denorm_level &#61; &#39;${group_level}&#39;

             AND a.GROUP_ID &#61; b.GROUP_ID) d,

         (SELECT b.class_code, a.class_name, a.root_distance

            FROM schnclassmsg a, schnclassinfo b

           WHERE b.parent_class_code &#61; &#39;${parent_class_code}&#39;

             AND b.denorm_level &#61; &#39;${class_level}&#39;

             AND a.class_code &#61; b.class_code) e

   WHERE a.GROUP_ID &#61; b.GROUP_ID

     AND b.GROUP_ID &#61; c.GROUP_ID

     AND b.class_code &#61; f.class_code

     AND c.parent_group_id &#61; d.GROUP_ID

     AND f.parent_class_code &#61; e.class_code

     AND a.deal_date >&#61; ${begin_time} and a.deal_date<&#61;${end_time}

     AND a.product_id &#61; g.product_id

     AND g.brand_type &#61; &#39;10&#39;

GROUP BY d.GROUP_ID,

         e.class_code,

         d.group_name,

         e.class_name,

         brand_type_name,

         d.queue_index,

         d.root_distance,

         e.root_distance

ORDER BY d.queue_index) aa, dfnd_hidden_col bb

where aa.login_group_id &#61; bb.login_group_id(&#43;)

and bb.function_code(&#43;) &#61; &#39;9445&#39;

 

3.4.3 修改报表模板

 

选中要隐藏的字段

 

 

Visibility中选中hide Element

修改表达式

 

 

4 尚未解决问题列表

 

问题编号

问题描述

问题解决条件

计划解决时间

1

表头固定

 

 

2

Word导出乱码

 

 

 

 

 

 

4.1 表头固定

当报表超出页面&#xff0c;出现滚动条时。最好可以固定表头&#xff0c;这样用户可以清楚看到是哪一项指标。如EXCEL锁定列功能&#xff0c;最好也能实现。估计用户以后会提这个需求。

 

4.2 Word导出乱码

Unix主机上导出Word时乱码&#xff0c;可能和主机字体设置有关系。BIRT找不到相应的字体文件。



推荐阅读
  • 深入解析Struts、Spring与Hibernate三大框架的面试要点与技巧 ... [详细]
  • Java测试服务器调试指南详细介绍了如何进行远程调试,并深入解析了Java Xdebug参数的使用方法。本文首先概述了Java内置的调试功能,重点介绍了JDB这一类似于GDB的强大调试工具。通过实例演示,读者可以掌握在测试环境中高效调试Java应用程序的技巧,包括配置远程调试环境和优化调试参数,以提高开发效率和代码质量。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 尽管我们尽最大努力,任何软件开发过程中都难免会出现缺陷。为了更有效地提升对支持部门的协助与支撑,本文探讨了多种策略和最佳实践,旨在通过改进沟通、增强培训和支持流程来减少这些缺陷的影响,并提高整体服务质量和客户满意度。 ... [详细]
  • 本文详细介绍了如何在Java Web服务器上部署音视频服务,并提供了完整的验证流程。以AnyChat为例,这是一款跨平台的音视频解决方案,广泛应用于需要实时音视频交互的项目中。通过具体的部署步骤和测试方法,确保了音视频服务的稳定性和可靠性。 ... [详细]
  • 基于Java和SSM框架的志愿者管理平台源代码分析与实现
    本研究针对基于Java和SSM框架的志愿者管理平台进行了详细的源代码分析与实现。该平台属于Java Web项目,采用Java EE技术栈,并结合了Spring、Spring MVC和MyBatis三大核心框架(非开源)。项目名称为“基于SSM的志愿者管理系统”,旨在提升志愿者管理的效率和规范性。通过对系统架构、模块设计及关键代码的深入解析,本文为开发者提供了全面的技术参考和实践指导。 ... [详细]
  • Hadoop 2.6 主要由 HDFS 和 YARN 两大部分组成,其中 YARN 包含了运行在 ResourceManager 的 JVM 中的组件以及在 NodeManager 中运行的部分。本文深入探讨了 Hadoop 2.6 日志文件的解析方法,并详细介绍了 MapReduce 日志管理的最佳实践,旨在帮助用户更好地理解和优化日志处理流程,提高系统运维效率。 ... [详细]
  • 如何在Java中高效构建WebService
    本文介绍了如何利用XFire框架在Java中高效构建WebService。XFire是一个轻量级、高性能的Java SOAP框架,能够简化WebService的开发流程。通过结合MyEclipse集成开发环境,开发者可以更便捷地进行项目配置和代码编写,从而提高开发效率。此外,文章还详细探讨了XFire的关键特性和最佳实践,为读者提供了实用的参考。 ... [详细]
  • 在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • 【实例简介】本文详细介绍了如何在PHP中实现微信支付的退款功能,并提供了订单创建类的完整代码及调用示例。在配置过程中,需确保正确设置相关参数,特别是证书路径应根据项目实际情况进行调整。为了保证系统的安全性,存放证书的目录需要设置为可读权限。值得注意的是,普通支付操作无需证书,但在执行退款操作时必须提供证书。此外,本文还对常见的错误处理和调试技巧进行了说明,帮助开发者快速定位和解决问题。 ... [详细]
  • 本文详细探讨了几种常用的Java后端开发框架组合及其具体应用场景。通过对比分析Spring Boot、MyBatis、Hibernate等框架的特点和优势,结合实际项目需求,为开发者提供了选择合适框架组合的参考依据。同时,文章还介绍了这些框架在微服务架构中的应用,帮助读者更好地理解和运用这些技术。 ... [详细]
  • 深入解析Gradle中的Project核心组件
    在Gradle构建系统中,`Project` 是一个核心组件,扮演着至关重要的角色。通过使用 `./gradlew projects` 命令,可以清晰地列出当前项目结构中包含的所有子项目,这有助于开发者更好地理解和管理复杂的多模块项目。此外,`Project` 对象还提供了丰富的配置选项和生命周期管理功能,使得构建过程更加灵活高效。 ... [详细]
author-avatar
手机用户2602927977
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有