SSH综合项目实战(快递) -- day15 highcharts实现图形报表

一、highcharts介绍

二、项目中嵌入highcharts

1、在后台系统中引入highcharts的资源文件



2、编写highcharts示例

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>饼形图</title>
<!-- 引入highcharts相关资源文件 -->
<script src="js/jquery-1.8.3.js"></script>
<script src="js/highcharts/highcharts.js"></script>
<script src="js/highcharts/modules/exporting.js"></script>
<script type="text/javascript">
$(function () {
    $('#container').highcharts({
        chart: {
            plotBackgroundColor: null,
            plotBorderWidth: null,
            plotShadow: false
        },
        title: {
            text: '2014 某网站各浏览器浏览量占比'
        },
        tooltip: {
            headerFormat: '{series.name}<br>',
            pointFormat: '{point.name}: <b>{point.percentage:.1f}%</b>'
        },
        plotOptions: {
            pie: {
                allowPointSelect: true,
                cursor: 'pointer',
                dataLabels: {
                    enabled: true,
                    format: '<b>{point.name}</b>: {point.percentage:.1f} %',
                    style: {
                        color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'
                    }
                }
            }
        },
        series: [{
            type: 'pie',
            name: '浏览器访问量占比',
            data: [
                ['Firefox',   45.0],
                ['IE',        26.8],
                ['Safari',     8.5],
                ['Opera',      6.2],
                ['其他',        0.7]
            ]
        }]
    });
});
</script>
</head>
<body>
	<div id="container"></div>
</body>
</html>

3、页面效果展示


三、在项目中展示分区分布图(饼形图)

1、在sub_area.html中引入highcharts相关资源文件


2、添加展示分布图的按钮


3、提供一个窗口,存放饼状图


		<!-- 分区分布图展示窗口 -->
		<div class="easyui-window" title="分区分布图" id="chartWindow" collapsible="false" 
				minimizable="false" maximizable="false" style="top:20px;left:200px">
			<!-- 分区分布图展示的容器 -->
			<div id="container"></div>
		</div>


	//页面加载完成后,对饼状图的窗口设置高度并进行隐藏
	$('#chartWindow').window({
        width: 700,
        modal: true,
        shadow: true,
        closed: true,
        height: 600,
        resizable:false
    });

4、编写按钮绑定事件


		//展示分区分布图的饼状图
		function doshow(){
			$("#charWindow").window("open");
			//发送ajax请求,获取数据,用于展示饼状图
			var url = "../../subareaAction_showSubareaChart.aciton";
			$.post(url,function(){
				$('#container').highcharts({
			        title: {
			            text: '分区分布图'
			        },
			        series: [{
			            type: 'pie',//展示的是饼状图
			            name: '分区数量',
			            data: data
			        }]
			    });
			});
		}

5、编写SubAreaAction中代码

	/**
	 * 展示分区分布饼状图
	 */
	@Action(value="subareaAction_showSubareaChart")
	public String showSubareaChart(){
		List<Object> list = service.findSubareas();
		this.list2Json(list, null);
		return NONE;
	}

6、编写SubareaService代码

	/**
	 * 展示分区分布图
	 */
	public List<Object> findSubareas() {
		return dao.findSubareas();
	}

7、编写SubareaDao代码

	@Query(value="select a.province, count(*) from SubArea s inner join s.area a group by a.province")
	public List<Object> findSubareas();

四、JasperReport + IReport 进行PDF报表设计

1、JasperReport 开发包


2、安装PDF报表设计生成软件


3、基于iReport进行报表格式的设计

(1)、创建文件,选择模版





(2)、设置预览方式,改为PDF preview


(3)、设置亚洲字体库





(4)、设置没有数据时的显示



(5)、使用静态文本



(6)、设计数据源,获取数据库中动态数据



4、将设计好的模版文件(.jrxml)放入到项目中


5、在common-parent工程的pom.xml中导入iReporter所依赖的jar包坐标

		<!-- itext -->
		<dependency>
			<groupId>com.lowagie</groupId>
			<artifactId>itext</artifactId>
			<version>2.1.7</version>
		</dependency>
		<dependency>
			<groupId>com.itextpdf</groupId>
			<artifactId>itext-asian</artifactId>
			<version>5.2.0</version>
		</dependency>

		<!-- groovy -->
		<dependency>
			<groupId>org.codehaus.groovy</groupId>
			<artifactId>groovy-all</artifactId>
			<version>2.2.0</version>
		</dependency>

		<!-- jasperreport -->
		<dependency>
			<groupId>net.sf.jasperreports</groupId>
			<artifactId>jasperreports</artifactId>
			<version>5.2.0</version>
			<exclusions>
				<exclusion>
					<groupId>com.lowagie</groupId>
					<artifactId>itext</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

6、在area.html中添加一个导出到PDF的按钮以及点击事件



7、编写Action中的代码

	@Autowired
	private DataSource dataSource;
	
	/**
	 * 导出PDF报表---基于JasperReport API实现导出
	 */
	@Action(value = "areaAction_exportPDF")
	public String exportPDF() throws Exception{
		// 读取 jrxml 文件
		String jrxml = ServletActionContext.getServletContext().getRealPath("/jr/test1.jrxml");
		// 准备需要数据
		Map<String, Object> parameters = new HashMap<String, Object>();
		parameters.put("company", "传智播客");
		// 准备需要数据
		JasperReport report = JasperCompileManager.compileReport(jrxml);
		JasperPrint jasperPrint = JasperFillManager.fillReport(report, parameters, dataSource.getConnection());

		HttpServletResponse response = ServletActionContext.getResponse();
		OutputStream ouputStream = response.getOutputStream();
		// 设置相应参数,以附件形式保存PDF
		response.setContentType("application/pdf");
		response.setCharacterEncoding("UTF-8");
		response.setHeader("Content-Disposition", "attachment; filename=" + FileUtils.encodeDownloadFilename("区域数据报表统计.pdf",
				ServletActionContext.getRequest().getHeader("user-agent")));
		// 使用JRPdfExproter导出器导出pdf
		JRPdfExporter exporter = new JRPdfExporter();
		exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
		exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);
		exporter.exportReport();// 导出
		ouputStream.close();// 关闭流

		return NONE;
	}


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值