jfreeChart生成报表
jfreeChart生成报表图片到本地:
import java.awt.Color;
import java.awt.Font;
import java.io.File;
import java.io.IOException;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis3D;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.NumberAxis3D;
import org.jfree.chart.axis.NumberTickUnit;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.labels.StandardCategoryToolTipGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.DatasetRenderingOrder;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer3D;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.data.category.DefaultCategoryDataset;
import org.junit.Test;
/**
*
* @function:jfreeChart生成报表数据
* @desc:缺点 Linux环境下会出现乱码,win下没有问题。
* @author:LLJ
* @date:2018年12月20日
*
*/
@Test
public static void createChart() {
//折线图数据
DefaultCategoryDataset lineDataset = new DefaultCategoryDataset();
//添加数据
lineDataset.addValue(9, "", "新中大");
lineDataset.addValue(7, "", "银色快车");
lineDataset.addValue(6, "", "用友A");
lineDataset.addValue(4, "", "用友B");
lineDataset.addValue(3, "", "用友C");
lineDataset.addValue(2, "", "用友G");
//柱状图数据
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
//添加数据
dataset.addValue(10, "", "新中大");
dataset.addValue(7, "", "银色快车");
dataset.addValue(6, "", "用友A");
dataset.addValue(5, "", "用友B");
dataset.addValue(3, "", "用友C");
dataset.addValue(9, "", "用友G");
//生成的柱状图
JFreeChart chart = ChartFactory.createBarChart3D(
"软件销量",
"名称",//X轴的标签
"套数",//Y轴的标签
dataset, //图标显示的数据集合
PlotOrientation.VERTICAL, //图像的显示形式(水平或者垂直)
false,//是否显示子标题
false,//是否生成提示的标签
false); //是否生成URL链接
/*
* 处理图形上的乱码
*/
//处理主标题的乱码
chart.getTitle().setFont(new Font("黑体",Font.BOLD,18));
//获取图表区域对象
CategoryPlot categoryPlot = (CategoryPlot)chart.getPlot();
//获取X轴的对象
CategoryAxis3D categoryAxis3D = (CategoryAxis3D)categoryPlot.getDomainAxis();
//获取Y轴的对象
NumberAxis3D numberAxis3D = (NumberAxis3D)categoryPlot.getRangeAxis();
//处理X轴上的乱码
categoryAxis3D.setTickLabelFont(new Font("黑体",Font.BOLD,10));
//处理X轴上的乱码
categoryAxis3D.setLabelFont(new Font("黑体",Font.BOLD,10));
//处理X轴外的乱码
numberAxis3D.setTickLabelFont(new Font("黑体",Font.BOLD,10));
//处理X轴外的乱码
numberAxis3D.setLabelFont(new Font("黑体",Font.BOLD,10));
//自定义Y轴上显示的刻度,以10作为1格
numberAxis3D.setAutoTickUnitSelection(false);
NumberTickUnit unit = new NumberTickUnit(1);
numberAxis3D.setTickUnit(unit);
//获取绘图区域对象
BarRenderer3D barRenderer3D = (BarRenderer3D)categoryPlot.getRenderer();
//设置柱形图的宽度
barRenderer3D.setMaximumBarWidth(0.07);
//在图形上显示数字
barRenderer3D.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
barRenderer3D.setBaseItemLabelsVisible(true);
barRenderer3D.setBaseItemLabelFont(new Font("宋体",Font.BOLD,10));
/*
* 放折线图数据
*/
categoryPlot.setDataset(1, lineDataset);
//设置折线
LineAndShapeRenderer lineandshaperenderer = new LineAndShapeRenderer();
lineandshaperenderer.setToolTipGenerator(new StandardCategoryToolTipGenerator());
categoryPlot.setRenderer(1, lineandshaperenderer);
// 柱状图和纵轴紧靠
categoryAxis3D.setLowerMargin(0.0);
categoryAxis3D.setCategoryLabelPositions(CategoryLabelPositions.DOWN_45);
//折线在柱面前面显示
categoryPlot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);
// 在E盘目录下生成图片
File file = new File("d:\\AppData\\image\\chart.png");
try {
ChartUtilities.saveChartAsJPEG(file, chart, 800, 600);
} catch (IOException e) {
e.printStackTrace();
}
}
控制层读取图片:
@RequestMapping("/chart")
public String reportChart(HttpServletRequest req,ModelMap map){
//生成图表
ChartUtil.createChart();
//读取并渲染
map.addAttribute("pic","http://localhost:8080/zdcrm/image/" + "chart.png");
return "reportForms/reportChart";
}
渲染:
<div align="center">
<img width="50%" height="50%" src="${basePath}${pic}" alt="报表">
</div>
jfreeChart生成报表相关推荐
- freemarker+Jfreechart生成Word文档(含图片)
这几天再弄一个报表,要统计一些信息最终的部分展示结果如下: 基本工具freemarker,jfreechart 工程的部分结构如下 与生成Word有关的类主要有FreemarkerConfigurat ...
- java使用ireport生成报表_JasperReport(3)——Java简单使用IReport生成的文件建立报表...
先看看设计的报表样式: reportTitle是新添加的一个参数,而其他的id和name是通过数据源得到的Filed.IReport在设置参数的时候需要先在左边新建一个parameter,然后再把该p ...
- 用MS SQL Reporting Services生成报表
灵活的报表功能是大多数业务应用程序的一个要求,这些报表功能在集成到 Web 应用程序中之后用途更加广泛.利用 SQL Server® 2000 Reporting Services 的最新版本,您可以 ...
- 使用FastReport报表工具生成报表PDF文档
在我们开发某个系统的时候,客户总会提出一些特定的报表需求,固定的报表格式符合他们的业务处理需要,也贴合他们的工作场景,因此我们尽可能做出符合他们实际需要的报表,这样我们的系统会得到更好的认同感.本篇随 ...
- 使用Excel连接WINCC生成报表的实现方法
WINCC自带的报表功能,在工程应用上不太适合国人的风格,所以就想借用强大的excel表格功能来制作灵活多变的丰富的报表.使用Excel的VBA功能实现和WINCC的变量建立连接,实现数据查询,可实现 ...
- java cutline_利用JFreeChart生成饼形图
14.3 利用JFreeChart生成饼形图 通过JFreeChart插件,即可以生成普通效果的饼形图,也可以生成3D效果的饼形图:如果想生成普通效果的饼形图,需要通过工厂类ChartFactory的 ...
- python生成报表并打印_使用expect+python拉取数据并生成报表
虽然脚本周一的时候就写好了,但是昨天才是第一次正式使用.加上昨天写了第二篇shell的tips,所以expect+python的脚本gen_report今天才写. 首先说一下背景.由于工作需要,有时我 ...
- python根据excel生成报表_python生成Excel图表(通过xlsxwriter)
前面介绍了pandas的简单用法,pandas的数据可以通过matlab第三方包将数据生成报表,但是我想将报表生成在Excel中,这时候就可以借助xlsxwriter第三方包来生成图标 缺点:xlsx ...
- Smartbi自定义生成报表-制作流程
Smartbi自定义生成报表,分析报告制作的流程: 模板准备 制作分析报告的第一步,准备要制作分析报告的模板,以便对要制作的内容有所评估. ● 制作模板:根据分析报告的主题.需求制作模板. ● 现有模 ...
- java JFreechart开发报表的实例demo下载
原文:java JFreechart开发报表的实例demo下载 源代码下载地址:http://www.zuidaima.com/share/1550463472110592.htm 运行效果图如下: ...
最新文章
- 西南科技大学 计算机组成原理2011-2012,西南科技大学计算机组成原理2010-2011试卷A卷参考答案(2011)...
- golang 函数指针相等比较
- 如果张东升是个程序员
- python普通菜单_python多级菜单
- 丢掉xml使用JavaConfig配置Spring
- java泛型_Java核心知识 基础五 JAVA 泛型
- 主成分分析(PCA)-最大方差解释
- 遇到的几个开机启动故障
- python调用rest api_调用rest api使用python将数据推送到运动学
- 美国签证过不了,ICLR 2020搬到埃塞俄比亚,同性恋学者:不去,保命要紧
- Ubuntu无法进入操作系统的恢复和备份操作
- Linux命令j解释之cp
- 源码分析之String
- Ubuntu18 yolov5使用ncnn部署
- python整体设计目标怎么写_设计模式及Python实现
- 安装的Mac Windows双系统,Mac分区的空间太小/太大了,有什么办法调整吗?
- Nginx下配置Https,测试环境的完整过程
- 关于证明PAC可学习
- 基于EGE的双人象棋
- 组网技术—VLANTRUNKVTP
热门文章
- OPPO Reno6 6Pro刷root强解BL锁 oppo reno6 Root教程
- 软件可靠性方法 学习笔记
- Mimics 21.0软件学习笔记(一)基本操作
- 【Codecs系列】视频格式国际标准:BT601/BT709/BT2020
- 西门子博途v14 SP1 S7-1200之间的以太网双边通讯(两个S7-1200 在一个项目中)
- java 生成war包_java利用Ant脚本生成war包全过程
- war、jar、ear文件对比
- 华中科技大学伍冬睿教授团队:生理计算中的对抗攻击与防御综述
- 89C51使用ADC0808模数转换
- 图形推理1000题pdf_公务员考试:遇到图形推理题就烦恼?5招教你练成最强大脑...