Jasper(3)——制作图表报表

之前本人是用前端的chart.js进行图表的制作,现在用一下Jasper看看如何制作图表报表。

制作报表

新创建一个报表文件:demo2.jrxml
不懂的关于Jaspersoft Studio的操作,请看上一篇:
Jasper(2)——简单使用导出PDF报表
我把多余的band删掉了,只剩下title和summary
在这里插入图片描述
以下是创建的属性
Parameters:name(String)
Field:chineseScore,mathScore,englishScore 三个都是Integer类型
time(String)
在这里插入图片描述
title部分我就省略了,summary部分就弄一个图表
比如我想弄copa一个学期以来语数英的第一次月考、期中、第二次月考和期末的成绩,用折线图来表示
首先我把Chart组件拖动到Summary
在这里插入图片描述
这里有很多类型的折线图,我们选择这种折线图
在这里插入图片描述
在这里插入图片描述
这里我就说以下怎么添加语文成绩这条线,数学英语成绩一样的操作,就忽略了
在这里插入图片描述
这里弄完后,如下图
在这里插入图片描述
然后点ok,进行对语文成绩这条线的设置
在这里插入图片描述
数学英语也一样
在这里插入图片描述
在这里插入图片描述
点击finish,调整图表,为了好看,可以在纵坐标加文字说明
在这里插入图片描述
为了能显示中文,我把Chart Plot设置字体的全设成“是微软雅黑吖”
在这里插入图片描述
然后进行Preview,若试过没问题了编译并导入到java项目中

Java代码导出

此次操作
在这里插入图片描述
创建实体Score

package com.copa.domain;

import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author copa
 * @createDate 2021-07-26 11:13
 * @function
 */
@Data
@NoArgsConstructor
public class Score {

    private Integer chineseScore;

    private Integer mathScore;

    private Integer englishScore;

    private String time;
}

controller

    @RequestMapping(value = "/pdf2")
    public void pdf2(Map<String, Object> parameters,
                     HttpServletResponse response) throws IOException {
        ServletOutputStream os = response.getOutputStream();
        try {
            // 模拟数据
            ArrayList<Score> list = new ArrayList<>();
            for (int i = 1; i <= 4; i++) {
                Score score = new Score();
                switch (i) {
                    case 1:
                        score.setTime("第一次月考");
                        break;
                    case 2:
                        score.setTime("期中");
                        break;
                    case 3:
                        score.setTime("第二次月考");
                        break;
                    case 4:
                        score.setTime("期末");
                        break;
                }
                score.setChineseScore(new Random().nextInt(100));
                score.setMathScore(new Random().nextInt(100));
                score.setEnglishScore(new Random().nextInt(100));

                list.add(score);
            }
            JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(list);
            parameters = parameters == null ? new HashMap<>() : parameters;
            // 入参
            parameters.put("name", "copa");
            ClassPathResource resource = new ClassPathResource("jasper/demo2.jasper");
            response.setContentType("application/pdf");
            InputStream jasperStream = resource.getInputStream();
            JasperPrint jasperPrint = JasperFillManager.fillReport(jasperStream, parameters, dataSource);
            JasperExportManager.exportReportToPdfStream(jasperPrint, os);
        } catch (JRException e) {
            e.printStackTrace();
        } finally {
            os.flush();
        }
    }

然后进行测试
http://localhost:8080/pdf2
能看到下图效果,证明已经成功~
在这里插入图片描述
项目地址:https://gitee.com/copaa/jasperdemo
导航栏:
Jasper(1)——入门
Jasper(2)——简单使用导出PDF报表
Jasper(4)——制作分组报表
Jasper(5)——制作父子报表
Jasper(6)——小技巧& 各种bug(有缘再补充)

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值