报表组件_JFreeChart
JFreeChart主要是用来制作各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱线图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。
JFreeChart代码是开源的,但是文档和代码演示收费。
图表类似于以下效果
主页
http://www.jfree.org/jfreechart/
下载
http://download.csdn.net/download/stdying/7797063
有 JFreeCHart1.0.19.zip
解压后可以运行jfreechart-1.0.19-demo.jar,观看Demo
在lib下找到这两个jar
jcommon-1.0.23.jar
jfreechart-1.0.19.jar
我们首先创建一个java project,名为JFreeCHartTest
事先在G盘下创建了一个名为Chart的文件夹,用来放置待会打印的报表文件。
我们下面写一个简单的示例代码
下面是示例代码的详细内容
上面的程序就是首先获取一个数据集(这个数据集的数据是自己需要打印的数据),之后这个数据集就会被用来打印报表。接下来通过图表工厂生成相应的chart对象,其中封装了要打印的其它数据信息。
最后我们创建一个输出流,使用ChartUtilities工具的writeChartAsJPEG方法,将相应的chart对象写成一个jpg格式的图片。
运行该程序,我们会发现在G盘的Chart文件夹下生成了一张报表图:
效果
怎么样,是不是很神奇?
我们把设置Chart的属性中的PlotOrientation.VERTICAL竖直显示改为PlotOrientation.HORIZONTAL水平显示,打印出的效果如下:
我们再修改成熟chart的代码,去生成一个饼状图:
效果:
以上就是最简单的报表打印代码逻辑的编写。下次我们深入探讨,去打印一些比较复杂的报表。
转载请注明出处:http://blog.csdn.net/acmman/article/details/52100192
JFreeChart主要是用来制作各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱线图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。
JFreeChart代码是开源的,但是文档和代码演示收费。
图表类似于以下效果
主页
http://www.jfree.org/jfreechart/
下载
http://download.csdn.net/download/stdying/7797063
有 JFreeCHart1.0.19.zip
解压后可以运行jfreechart-1.0.19-demo.jar,观看Demo
在lib下找到这两个jar
jcommon-1.0.23.jar
jfreechart-1.0.19.jar
我们首先创建一个java project,名为JFreeCHartTest
事先在G盘下创建了一个名为Chart的文件夹,用来放置待会打印的报表文件。
我们下面写一个简单的示例代码
下面是示例代码的详细内容
package com.org.jfreechart.test;
import java.awt.Font;
import java.io.FileOutputStream;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.StandardChartTheme;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
/**
* 演示最简单的柱状图生成
* */
public class TestJFressChart{
public static void main(String[] args) {
CategoryDataset dataset=getDataSet2();
ChartFactory.setChartTheme(applyChartTheme());//设置主题样式,不然输出不了中文
JFreeChart chart =ChartFactory.createBarChart3D(
"水果产量图", //图表标题
"水果", //目录轴的显示标签
"产量", //数值轴的显示标签
dataset,//数据集
PlotOrientation.VERTICAL,//图表方向:水平、垂直
true, //是否显示图例(对于简单的柱状图必须是true)
false,//是否生成工具
false //是否生成URL链接
);
FileOutputStream fos_jpg=null;
try {
fos_jpg=new FileOutputStream("G:\\Chart\\fruit.jpg");
//下面的参数分别是输出流、质量、图表数据、宽度、高度、备注信息
ChartUtilities.writeChartAsJPEG(fos_jpg, 1.0f, chart,400, 300,null);
}catch (Exception e) {
e.printStackTrace();
}finally{
try {
fos_jpg.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* 获取一个演示用的简单数据集对象
* */
private static CategoryDataset getDataSet2() {
DefaultCategoryDataset dataset=new DefaultCategoryDataset();
dataset.addValue(100, "北京", "苹果");
dataset.addValue(100, "上海", "苹果");
dataset.addValue(100, "广州", "苹果");
dataset.addValue(200, "北京", "香蕉");
dataset.addValue(200, "上海", "香蕉");
dataset.addValue(200, "广州", "香蕉");
dataset.addValue(300, "北京", "凤梨");
dataset.addValue(300, "上海", "凤梨");
dataset.addValue(300, "广州", "凤梨");
dataset.addValue(400, "北京", "葡萄");
dataset.addValue(400, "上海", "葡萄");
dataset.addValue(400, "广州", "葡萄");
dataset.addValue(500, "北京", "荔枝");
dataset.addValue(500, "上海", "荔枝");
dataset.addValue(500, "广州", "荔枝");
return dataset;
}
private static StandardChartTheme applyChartTheme() {
//创建主题样式
StandardChartTheme standardChartTheme = new StandardChartTheme("CN");
//设置标题字体
standardChartTheme.setExtraLargeFont(new Font("隶书", Font.BOLD, 20));
//设置图例的字体
standardChartTheme.setRegularFont(new Font("宋书", Font.PLAIN, 15));
//设置轴向的字体
standardChartTheme.setLargeFont(new Font("宋书", Font.PLAIN, 15));
return standardChartTheme;
}
}
上面的程序就是首先获取一个数据集(这个数据集的数据是自己需要打印的数据),之后这个数据集就会被用来打印报表。接下来通过图表工厂生成相应的chart对象,其中封装了要打印的其它数据信息。
最后我们创建一个输出流,使用ChartUtilities工具的writeChartAsJPEG方法,将相应的chart对象写成一个jpg格式的图片。
运行该程序,我们会发现在G盘的Chart文件夹下生成了一张报表图:
效果
怎么样,是不是很神奇?
我们把设置Chart的属性中的PlotOrientation.VERTICAL竖直显示改为PlotOrientation.HORIZONTAL水平显示,打印出的效果如下:
我们再修改成熟chart的代码,去生成一个饼状图:
package com.org.jfreechart.test;
import java.awt.Font;
import java.io.FileOutputStream;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.StandardChartTheme;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
/**
* 演示最简单的柱状图生成
* */
public class TestJFressChart{
public static void main(String[] args) {
//获取饼状图数据
PieDataset pieDataset=getPieDataSet();
ChartFactory.setChartTheme(applyChartTheme());//设置主题样式,不然输出不了中文
JFreeChart piechart =ChartFactory.createPieChart3D(
"水果产量图", //图表标题
pieDataset,//数据集
true, //是否显示图例(对于简单的柱状图必须是true)
false,//是否生成工具
false //是否生成URL链接
);
FileOutputStream fos_jpg=null;
try {
//打印饼状图为fruit.jpg
fos_jpg=new FileOutputStream("G:\\Chart\\fruit.jpg");
//下面的参数分别是输出流、质量、图表数据、宽度、高度、备注信息
ChartUtilities.writeChartAsJPEG(fos_jpg, 1.0f, piechart,400, 300,null);
}catch (Exception e) {
e.printStackTrace();
}finally{
try {
fos_jpg.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* 获取一个饼状图的简单数据集对象
* */
private static PieDataset getPieDataSet() {
DefaultPieDataset dataset=new DefaultPieDataset();
dataset.setValue("苹果",100);
dataset.setValue("香蕉",200);
dataset.setValue("凤梨",300);
dataset.setValue("葡萄",400);
dataset.setValue("荔枝",500);
return dataset;
}
private static StandardChartTheme applyChartTheme() {
//创建主题样式
StandardChartTheme standardChartTheme = new StandardChartTheme("CN");
//设置标题字体
standardChartTheme.setExtraLargeFont(new Font("隶书", Font.BOLD, 20));
//设置图例的字体
standardChartTheme.setRegularFont(new Font("宋书", Font.PLAIN, 15));
//设置轴向的字体
standardChartTheme.setLargeFont(new Font("宋书", Font.PLAIN, 15));
return standardChartTheme;
}
}
效果:
以上就是最简单的报表打印代码逻辑的编写。下次我们深入探讨,去打印一些比较复杂的报表。
转载请注明出处:http://blog.csdn.net/acmman/article/details/52100192