工具下载:https://pan.baidu.com/s/1pMEZwfh
1 创建一个Java项目
2 制定一个存放报表模板的包,创建report模板
    new-->report,创建名为 mytest_1.rptdesign 的模板
3 创建数据源和数据集
3 新建数据源 和 数据集   

方式一: 基于数据库sql
3.1 创建数据源 Data Sources
    选择: JDBC Data Source
    以mysql为例:
        Driver Class: com.mysql.jdbc.Driver (v5.1)
        Database URL: jdbc:mysql://192.168.101.75:13507/imp_monitordb
3.1 创建数据集 Data Sets
        Data Set Type 选择: SQL Select Query
        然后写查询sql

创建数据源:

创建数据集不带参数的sql:

带参数的sql写法:
数据集:

方式二 :基于代码,调用方法
3.1 创建数据源 Data Sources
        选择: Scripted Data Source
3.1 创建数据集 Data Sets

布局及样式调整:

基本样式设置:

设置列表隔行变色:

饼状图,柱状图和饼状图的数据集格式一样:

去掉报表自动生成的时间,注释掉下面的<page-footer>标签即可:

<page-setup>
        <simple-master-page name="Simple MasterPage" id="2">
            <page-footer>
                <text id="3">
                    <property name="contentType">html</property>
                    <text-property name="content"><![CDATA[<value-of>new Date()</value-of>]]>                       </text-property>
                </text>
            </page-footer>
        </simple-master-page>
 </page-setup>  

核心代码:

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
​
/**
 * Created by test on 2018/2/6.
 */
public class test {    public static IReportEngine engine ; //报表引擎
    public static String birtRoot = "/usr/local/suninfo/siem/tomcat/webapps/ROOT/birt" ; //报表模版根路径
    public static void main(String[] args) {        Map<String,Object> paramValues=new HashMap<>();
        paramValues.put("reportUuid","sabfaskjnmflwkem");
        String outputFilePath=new DateTime().toString("yyyy-MM-dd");
        createReport("logInfo_report_pdf.rptdesign",paramValues,birtRoot+"report/pdf/"+outputFilePath,"pdf");
​
    }
    public static void createReport(String designPath,Map<String,Object> paramValues,String outFilePath,String fileFormat){        try{            //打开一个报表设计文件
            String pathName=birtRoot+"/"+designPath;
            IReportRunnable design = engine.openReportDesign(pathName);
            //以打开的报表设计文件为参数,创建一个获取参数的对象
            IGetParameterDefinitionTask paramTask = engine.createGetParameterDefinitionTask(design);
            //获取报表设计文件中的参数定义
            Collection parameters = paramTask.getParameterDefns(false);
            HashMap parameterMap=evaluateParameterValues(parameters,paramValues);
            //创建生成报表的任务对象
            IRunAndRenderTask task = engine.createRunAndRenderTask(design);
            //为报表生成任务设置参数集合对象
            task.setParameterValues(parameterMap);
​
            if(fileFormat.equals("html")){                //创建报表render选项对象
                HTMLRenderOption options = new HTMLRenderOption ();
                //设置输出格式(PDF,HTML等)
                options.setOutputFormat( fileFormat );
                options.setImageDirectory(birtRoot+File.separatorChar+"html"+File.separatorChar+"image");
                options.setOutputFileName(outFilePath);
                //设置render options对象
                task.setRenderOption( options );
                //运行生成报表
                task.run();
                task.close();
                dealReportCss(birtRoot, outFilePath);
            }else if(fileFormat.equals("pdf")){                PDFRenderOption options = new PDFRenderOption();
                options.setOutputFormat(fileFormat);
                options.setOutputFileName(outFilePath);
                task.setRenderOption( options );
                //运行生成报表
                task.run();
                task.close();
            }
        }catch (Exception e){​
        }
    }
    //为报表设计文件中定义的参数赋值
    @SuppressWarnings({ "rawtypes", "unchecked" })
    public static HashMap evaluateParameterValues(Collection paramDefns,Map<String,Object> params) {        HashMap inputValues = new HashMap();
        Iterator iter = paramDefns.iterator();
        while (iter.hasNext()) {            IParameterDefnBase pBase = (IParameterDefnBase) iter.next();
            if (pBase instanceof IScalarParameterDefn) {                IScalarParameterDefn paramDefn = (IScalarParameterDefn) pBase;
                String paramName = paramDefn.getName();
                String inputValue = (String) params.get(paramName);
                inputValues.put(paramName, inputValue);
            }
        }
        return inputValues;
    }
    public static void dealReportCss(String birtRoot,String outFilePath){        RandomAccessFile random = null;
        FileOutputStream fos=null;
        OutputStreamWriter osw=null;
        BufferedWriter bw =null;
        try {            if(!birtRoot.startsWith("/")){                birtRoot =  "/" + birtRoot;
            }
            String str = "file:"+birtRoot.replace("\\", "/")+"/html";
            StringBuffer sb = new StringBuffer();
            random =new RandomAccessFile(new File(outFilePath),"rw");
            String readLine = random.readLine();
            while(readLine != null){                readLine = new String(readLine.getBytes("ISO-8859-1"), "UTF-8");
                if(readLine.contains(str)){                    readLine = readLine.replace(str, ".");
                }
                sb.append(readLine+"\n");
                readLine = random.readLine();
            }
            random.setLength(0);
            fos=new FileOutputStream(new File(outFilePath));
            osw=new OutputStreamWriter(fos);
            bw = new BufferedWriter(osw);
            bw.write(sb.toString());
        } catch (Exception e) {            System.out.println(outFilePath+"读取报表文件异常!");
        }finally{            try {                if(random != null){                    random.close();
                }
            } catch (IOException e1) {                e1.printStackTrace();
            }
            try {                if(bw != null){                    bw.close();
                }
            } catch (IOException e1) {                e1.printStackTrace();
            }
            try {                if(osw != null){                    osw.close();
                }
            } catch (IOException e1) {                e1.printStackTrace();
            }
            try {                if(fos != null){                    fos.close();
                }
            } catch (IOException e1) {                e1.printStackTrace();
            }
        }
    }
}

相关jar包:

<!-- 报表相关jar -->
        <dependency>
            <groupId>org.apache.batik</groupId>
            <artifactId>css</artifactId>
            <version>1.6.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.batik</groupId>
            <artifactId>util</artifactId>
            <version>1.6.0</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse</groupId>
            <artifactId>birt.runtime</artifactId>
            <version>4.5.0</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse</groupId>
            <artifactId>core.runtime</artifactId>
            <version>3.11.0</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse</groupId>
            <artifactId>core.resources</artifactId>
            <version>3.10.0</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.datatools.connectivity.oda</groupId>
            <artifactId>consumer</artifactId>
            <version>3.2.6</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.datatools.connectivity.oda</groupId>
            <artifactId>oda</artifactId>
            <version>3.4.3</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.datatools</groupId>
            <artifactId>connectivity</artifactId>
            <version>1.2.11</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.emf</groupId>
            <artifactId>common</artifactId>
            <version>2.11.0</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.emf</groupId>
            <artifactId>ecore.xmi</artifactId>
            <version>2.11.0</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.emf</groupId>
            <artifactId>ecore</artifactId>
            <version>2.11.0</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.equinox</groupId>
            <artifactId>common</artifactId>
            <version>3.7.0</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.equinox</groupId>
            <artifactId>registry</artifactId>
            <version>3.6.0</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse</groupId>
            <artifactId>osgi</artifactId>
            <version>3.10.100</version>
        </dependency>
        <dependency>
            <groupId>org.mozilla</groupId>
            <artifactId>javascript</artifactId>
            <version>1.7.5</version>
        </dependency>
        <dependency>
            <groupId>org.w3c.css</groupId>
            <artifactId>sac</artifactId>
            <version>1.3.1</version>
        </dependency>
        <dependency>
            <groupId>com.ibm</groupId>
            <artifactId>icu</artifactId>
            <version>54.1.1</version>
        </dependency>
        <dependency>
            <groupId>com.lowagie</groupId>
            <artifactId>text</artifactId>
            <version>2.1.7</version>
        </dependency>
        <dependency>
            <groupId>org.apache.batik</groupId>
            <artifactId>transcoder</artifactId>
            <version>1.6.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.batik</groupId>
            <artifactId>dom</artifactId>
            <version>1.6.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.batik</groupId>
            <artifactId>bridge</artifactId>
            <version>1.6.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.batik</groupId>
            <artifactId>dom.svg</artifactId>
            <version>1.6.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.batik</groupId>
            <artifactId>parser</artifactId>
            <version>1.6.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.batik</groupId>
            <artifactId>xml</artifactId>
            <version>1.6.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.batik</groupId>
            <artifactId>ext.awt</artifactId>
            <version>1.6.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache</groupId>
            <artifactId>xerces</artifactId>
            <version>2.9.0</version>
        </dependency>
        <dependency>
            <groupId>org.w3c.dom</groupId>
            <artifactId>svg</artifactId>
            <version>1.1.0</version>
        </dependency>
​
        <dependency>
            <groupId>com.googlecode.juniversalchardet</groupId>
            <artifactId>juniversalchardet</artifactId>
            <version>1.0.3</version>
        </dependency>

eclipse+birt报表开发相关推荐

  1. birt报表开发01-birt安装

    参考博文:birt报表开发入门 birt安装有多种方式,这边介绍一种最简单的方式(毕竟重点是学习birt的开发,不是birt的安装),直接下载带有birt插件的eclipse的软件. 下载链接:htt ...

  2. Eclipse BIRT使用之BIRT Designer篇(转)

    Eclipse BIRT使用之BIRT Designer篇 在开源的报表工具中,Eclipse的BIRT(Business Intelligence and Reporting Tools ,简称BI ...

  3. BIRT:基于 Eclipse 的报表

      胡键 , 西安交通大学硕士 2006 年 3 月 22 日 几乎在各种应用中,报表都具有其不可替代的作用.各类报表软件也是争奇斗艳,如今Eclipse也推出了自己的报表框架:BIRT.现在,让我们 ...

  4. birt报表表格边框_选开源报表开发还是商用?2020报表软件产品整理

    开源报表却越来越受到程序员热烈追捧,如ireport. Jsper report.jfreechart这样的免费,开源的JAVA报表工具,在一下开源的JAVA报表相关的论坛里面都是热火朝天,发问者众多 ...

  5. birt报表数据只有一条_这个低代码报表开发平台,操作类似Excel,用好了不需要加班...

    现在低代码开发平台很火,能够通过零代码或少量代码就可以快速创建应用. 但是从实践结果来看,完全的零代码开发应用是不可能的,机器替代人类智慧还需要很长的路要走.但是介于两者之间的低代码模式开发应用是值得 ...

  6. 利用JasperReport+iReport进行Web报表开发

    用JasperReport+iReport进行Web报表开发 序言 在非常多实际的项目里,报表都是当中十分重要的组成部分,比如把查询结果以报表的形式呈现出来.这里所提到的报表可不是简单的二维表,而是拥 ...

  7. 使用JasperReport+iReport进行Web报表开发

    使用JasperReport+iReport进行Web报表开发 前言 在实际工程中非常,报告是其中很重要的一部分,结果以报表的形式呈现出来.这里所提到的报表可不是简单的二维表,而是拥有复杂表头的.多维 ...

  8. birt 报表与润乾报表对比

    BIRT,全称Business Intelligence and Reporting Tools,是为 Web 应用程序开发的基于 Eclipse 的开源报表系统,它的特点在于以 Java 和 Jav ...

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

    前一段时间,被导师安排对报表开发工具做调研,之后就一度泡在各大博客.论坛里,尽可能全面的搜集了几款报表工具的优缺点,攒成了<java报表工具报表软件选型经验总结分享>.不过大多都是直接抄的 ...

最新文章

  1. android数据库降级_android——数据库版本升/降级问题
  2. python timer使用-关于定时器的两种使用方法
  3. matlab 老照片处理,matlab实现PS算法之百叶窗、老照片
  4. 京东AI NLP高阶实训学习笔记
  5. 添加vlan后无法上网_VLAN攻击如何有效防范?搞定虚拟局域网就在以下三点
  6. 【剑指offer】面试题56 - II:数组中数字出现的次数 II(Java)
  7. 【资源】《可解释的机器学习》,让机器学习不再神秘!
  8. Subversion 安装文件及操作手册
  9. 华工计算机学院专硕分数线,2017华南理工大学
  10. c语言三角函数乘法怎么表示,这个图里的三角函数 要怎么用c语言打出来
  11. 傻傻弄不清楚SAP和ERP?
  12. 从前端到管理者,小i机器人成长体验如何?
  13. 2022 社招 | 趋势科技 Linux开发 面经
  14. .NET pfx文件解析私钥和公钥
  15. vivo Y79的Usb调试模式在哪里,打开vivo Y79Usb调试模式的方法
  16. 计算机ps2定义,软件硬件界面接口定义 bt656 硬件接口定义
  17. 【本人秃顶程序员】程序员不要去这样的公司
  18. 网络营销存在的安全问题
  19. 设计模式之--迭代器模式
  20. 浅谈:基于物联网的固定资产管理技术

热门文章

  1. 关于解决package.xml编译时出现run_depend, bulid_depend问题
  2. deepin linux--安装virtualbox
  3. 国产达梦数据库使用心得
  4. linux重定向logcat,logcat重定向adb命令.doc
  5. STM32单片机入门学习笔记——定时器TIM第三部分
  6. Android TV Leanback (八)(引导步骤)
  7. SQL*Plus的基本操作
  8. strtotime用法
  9. php strtotime,php strtotime不起作用
  10. pytorch写cnn