您的位置 首页 java

Java报表之JasperReports | 绘制柱状图

创建一个新的报表文件

1、 File –> New –> Jasper Report,弹出New Report Wizard,选择 Report 模板Blank A4,点击Next;

Java报表之JasperReports | 绘制柱状图

2、在File Name中输入报表文件名称(这里演示我填入的文件名称为BarChartDemo),然后点击Next;

Java报表之JasperReports | 绘制柱状图

3、点击Next;

Java报表之JasperReports | 绘制柱状图

4、点击Finish。

Java报表之JasperReports | 绘制柱状图

创建报表文件的每一步我都截了图,说简单点,创建文件就是选一个模板、起个名称就完了。

我工作经历中涉及到报表开发的工作也不多,接触过的模板也就Blank A4,其它的报表模板我都是没有用过的。粗略地看了下JasperReports中的其它模板,感觉有用的不多,顶多可以在开发报表的时候参考下,可以直接拿来用的几乎没有。

报表文件创建成功后,我们看到的是如下界面。

Java报表之JasperReports | 绘制柱状图

报表文件元素说明

  • Title:标题区,如果数据有多页只会在第一页打印;
  • Page Header:页头区,多页的情况下每页都会打印;
  • Column Header:列头区,配合下面的Detail区打印列表数据,多页的情况下每页都会打印;
  • Detail:可以新增多个Detail区,可以组合打印出多个列表数据,多页的情况下每页都会打印;
  • Column Footer:列表底部区,多页的情况下每页都会打印;
  • Page Footer:页底部区,多页的情况下每页都会打印;
  • Summary:合计区,只会在最后一页打印。

调整Detail的高度

删除除Detail外的其它所有部分,即仅保留Details,然后在Detail上单击鼠标右键,然后点击Maximize Brand Height。

Java报表之JasperReports | 绘制柱状图

新建一个Parameter

对象Parameters的作用是从外部向报表内部传递数据。

在Parameters上单击鼠标右键,然后点击Create Parameter。

Java报表之JasperReports | 绘制柱状图

将新创建的Parameter的Name设置成dataList,Class设置成 Java .util.ArrayList。

Java报表之JasperReports | 绘制柱状图

创建Dataset

在BarChartDemo上单击鼠标右键,然后点击Create Dataset。

Java报表之JasperReports | 绘制柱状图

将新创建的Dataset的Name设置成barChartDataset。

展开barChartDataset,添加两个Field。

Name

Class

name

java.lang .String

value

java.lang. Integer

报表添加Bar Chart

将Chart拖动到Detail中。弹出Chart Wizard,选择Bar Chart,然后点击Finish。

选中Bar Chart,设置Chart的宽度充满整个容器。

设置Bar Chart的属性

选中Chart,单击右键,选择Edit Chart Wizard。

配置Chart属性

如果有使用过 百度 的Echarts的话会对Series、Label、Value、Category有深的理解。

说明:

  • Series:系列,本示例中只有一个系列,所以未设置系列;上图中红、蓝、绿三种不同颜色的条柱分别对应一个系列;
  • Label:每个条柱上显示的说明文字, 字符串 类型;
  • Value:每个条柱的值,会根据value显示条柱的高度,不能是字符串类型;
  • Category:类别,上图中的One、Two、Three……就是Category。

Dataset配置信息详情:

  • Dataset:barChartDataset
  • Increment on:None
  • Reset on:Report
  • Use a JRDatasource expression
  • new net.sf. JasperReport s.engine.data.JRBeanCollectionDataSource($P{dataList})

因为本示例程序只有一个Serie,所以我隐藏了Legend。

显示Label:

X轴说明文字调整显示角度

直接在属性里不能设置角度为负数,我是在Source里直接改的XML源码。

这样一个Bar Chart图表就创建成功了。

使用Java填充报表文件

关键代码:

 @ResponseBody
@GetMapping("/chart")
public  void  chart(HttpServletResponse response) {
    try {
        // 报表需要的动态参数
        List<Dict> dataList = Lists.newArrayList();
        dataList.add(Dict.create().set("name", "总人数").set("value", 100));
        dataList.add(Dict.create().set("name", "孕产妇").set("value", 20));
        dataList.add(Dict.create().set("name", "0-6岁儿童").set("value", 5));
        dataList.add(Dict.create().set("name", "老年人").set("value", 15));
        dataList.add(Dict.create().set("name", " 高血压 ").set("value", 10));
        dataList.add(Dict.create().set("name", " 糖尿病 ").set("value", 2));
        dataList.add(Dict.create().set("name", " 脑卒中 ").set("value", 18));
        dataList.add(Dict.create().set("name", " 冠心病 ").set("value", 30));
        dataList.add(Dict.create().set("name", "恶性肿瘤").set("value", 12));
        dataList.add(Dict.create().set("name", " 慢阻肺 ").set("value", 8));
        // 编译
        JasperReport jasperReport = JasperCompileManager.compileReport(
                ResourceUtils.getFile("classpath:BarChartDemo.jrxml").getAbsolutePath()
        );
        Map<String, Object> paramMap = new HashMap<>();
        paramMap.put("dataList", dataList);
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, paramMap, new JREmptyDataSource());
        JasperExportManager.exportReportToPdfStream(jasperPrint, response.get Output Stream());
    } catch ( Exception  e) {
        e.printStackTrace();
    }
}  

效果图

文章来源:智云一二三科技

文章标题:Java报表之JasperReports | 绘制柱状图

文章地址:https://www.zhihuclub.com/195942.shtml

关于作者: 智云科技

热门文章

网站地图