这两天学习了一些jfreechart 和 poi操作excel 的方法。
仅作备忘吧。
先说饼图,柱图,折线图
饼图
数据使用 DefaultPieDataset进行封装
DefaultPieDataset data=new DefaultPieDataset();
data.setValue("高中以下", 0.1);
data.setValue("高中", 0.1);
data.setValue("大专", 0.1);
data.setValue("本科", 0.1);
data.setValue("硕士", 0.1);
data.setValue("博士", 5);
将数据放到3d饼图类中
PiePlot3D plot=new PiePlot3D(data);// 生成一个3D饼图
JFreeChart chart=new JFreeChart("", JFreeChart.DEFAULT_TITLE_FONT, plot, true);// 生成一个图
chart.setBackgroundPaint(java.awt.Color.white);// 可选,设置图片背景色
chart.setTitle("程序员学历情况调查表-By Alpha");// 可选,设置图片标题
最后将chart 数据放byteArrayOutputStream 中,共其他的方法使用
ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();
ChartUtilities.writeChartAsJPEG(byteArrayOutputStream, chart, 500, 300);
完整方法
private static void genPieJPG() throws IOException {
DefaultPieDataset data=new DefaultPieDataset();
// 数据初始化
// data.setValue("高中以下", 380);
// data.setValue("高中", 1620);
// data.setValue("大专", 6100);
// data.setValue("本科", 8310);
// data.setValue("硕士", 3520);
// data.setValue("博士", 80);
data.setValue("高中以下", 0.1);
data.setValue("高中", 0.1);
data.setValue("大专", 0.1);
data.setValue("本科", 0.1);
data.setValue("硕士", 0.1);
data.setValue("博士", 5);
PiePlot3D plot=new PiePlot3D(data);// 生成一个3D饼图
JFreeChart chart=new JFreeChart("", JFreeChart.DEFAULT_TITLE_FONT, plot, true);// 生成一个图
chart.setBackgroundPaint(java.awt.Color.white);// 可选,设置图片背景色
chart.setTitle("程序员学历情况调查表-By Alpha");// 可选,设置图片标题
// plot.setToolTipGenerator(new StandardPieToolTipGenerator());
// 500是图片长度,300是图片高度
// String filename = ServletUtilities.saveChartAsPNG(chart,500,300,info,session);
ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();
ChartUtilities.writeChartAsJPEG(byteArrayOutputStream, chart, 500, 300);
FileOutputStream file=new FileOutputStream("d:/a.jpg");
file.write(byteArrayOutputStream.toByteArray());
file.close();
}
下面是图例
柱图
private static void genBarJPG() throws IOException {
// row keys...
final String series1="First";
// column keys...
final String category1="Category 1";
final String category2="Category 2";
final String category3="Category 3";
final String category4="Category 4";
final String category5="Category 5";
// create the dataset...
final DefaultCategoryDataset dataset=new DefaultCategoryDataset();
dataset.addValue(1.0, series1, category1);
dataset.addValue(4.0, series1, category2);
dataset.addValue(3.0, series1, category3);
dataset.addValue(5.0, series1, category4);
dataset.addValue(5.0, series1, category5);
final JFreeChart chart=ChartFactory.createBarChart("中文", // chart title
"类别", // domain axis label
"四圣兽", // range axis label
dataset, // data
PlotOrientation.VERTICAL, // orientation
true, // include legend
true, // tooltips?
true // URLs?
);
ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();
ChartUtilities.writeChartAsJPEG(byteArrayOutputStream, chart, 500, 300);
FileOutputStream file=new FileOutputStream("d:/a.jpg");
file.write(byteArrayOutputStream.toByteArray());
file.close();
}
图例
折线图
private static void genLineJPG() throws IOException {
// 数据源
XYSeriesCollection seriesCollection=new XYSeriesCollection();
XYSeries series1=new XYSeries("平均收视率");
// x, y 都是数字型
series1.add(1, 7.25);
series1.add(2, 4.81);
series1.add(3, 3.69);
series1.add(4, 3.53);
series1.add(5, 2.95);
series1.add(6, 3.96);
seriesCollection.addSeries(series1);
/**
* String title, // 图标题 String xAxisLabel x 轴标题 String yAxisLabel, y 轴标题 XYDataset dataset, 数据源 PlotOrientation orientation,
* 显示方向 boolean legend, 是否显示图例 boolean tooltips, 是否显示 tooltip boolean urls 是否指定 url )
**/
JFreeChart chart=
ChartFactory.createXYLineChart("无敌珊宝妹收视率走势图", "集数", "收视率百分点", seriesCollection, PlotOrientation.VERTICAL, true, true,
false);
ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();
ChartUtilities.writeChartAsJPEG(byteArrayOutputStream, chart, 500, 300);
FileOutputStream file=new FileOutputStream("d:/a.jpg");
file.write(byteArrayOutputStream.toByteArray());
file.close();
}
图例
一.POI简介
Jakarta POI 是apache的子项目,目标是处理ole2对象。它提供了一组操纵Windows文档的Java API
目前比较成熟的是HSSF接口,处理MS Excel(97-2002)对象。它不象我们仅仅是用csv生成的没有格式的可以由Excel转换的东西,而是真正的Excel对象,你可以控制一些属性如sheet,cell等等。
二.HSSF概况
HSSF 是Horrible SpreadSheet Format的缩写,也即“讨厌的电子表格格式”。 也许HSSF的名字有点滑稽,就本质而言它是一个非常严肃、正规的API。通过HSSF,你可以用纯Java代码来读取、写入、修改Excel文件。
HSSF 为读取操作提供了两类API:usermodel和eventusermodel,即“用户模型”和“事件-用户模型”。前者很好理解,后者比较抽象,但操作效率要高得多。
使用poi 写入操作
一个简单的操作流程,
先创建一个excel文件对象 HSSFWorkbook,
根据excel对象创建一个sheet,
根据sheet创建一个行对象,
向行对象写入数据,
将excel文件对象写入输出流或写入到文件中。
HSSFWorkbook wb=new HSSFWorkbook();
//英文对这个类的解释 An object that handles instantiating concrete classes of the various instances one needs for HSSF and XSSF.
CreationHelper createHelper=wb.getCreationHelper();
HSSFSheet sheet=wb.createSheet("数据表");
//向excel中插入图片,在这里可以将上面的生成的图传递过来,插入到excel中
//start
HSSFPatriarch patriarch=sheet.createDrawingPatriarch();
HSSFClientAnchor anchor=new HSSFClientAnchor(0, 0, 512, 255, (short)1, 1, (short)10, 20);
anchor.setAnchorType(3);
patriarch.createPicture(anchor, wb.addPicture(baos.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));
//end
//向excel中写入数据
for(int i=0; i < 10; i++) {
// Create a row and put some cells in it. Rows are 0 based.
Row row=sheet.createRow(i);
// Create a cell and put a value in it.
Cell cell=row.createCell(0);
cell.setCellValue(1000);
// Or do it on one line.
row.createCell(1).setCellValue(1.2);
row.createCell(2).setCellValue(createHelper.createRichTextString("中文"));
row.createCell(3).setCellValue(true);
}
// Write the output to a file
FileOutputStream fileOut=new FileOutputStream("d:/workbook33.xls");
wb.write(fileOut);
fileOut.close();
最后生成图片如下
参考:
jfreechart
http://www.java2s.com/Code/Java/Chart/JFreeChartBarChartDemo.htm
http://liliugen.iteye.com/blog/510838
poi excel
http://ltc603.iteye.com/blog/30184
http://developer.51cto.com/art/201202/319070.htm
http://poi.apache.org/
- 大小: 21.2 KB
- 大小: 17.2 KB
- 大小: 15.5 KB
- 大小: 122.7 KB
分享到:
相关推荐
POI和JFreeChart JAR包 可以让大家方便的实现 利用java导出Excel文件,还可以画出饼图,曲线图 柱状图等哦
POI和JFreeChart框架实现生成Excel文件(生成 统计图)
JFreeChart 在 web中的应用JFreeChart 在 web中的应用JFreeChart 在 web中的应用JFreeChart 在 web中的应用JFreeChart 在 web中的应用
jfreechart报表组件简单应用实例。熟悉jfreechart的基本用法。
JFreeChart示例 JAVA_JFreeChart的应用 JFreeChart 教程
jfreechart 在tomcat下的应用
jfreechart简单实例 jfreechart简单实例 jfreechart简单实例
jFreeChart简单入门例子
jfreechart 中文简单说明 API
本文详细介绍了JFreeChart的下载、部署,以及Java、Jsp实例,应用中需要注意的事项。
JFreeChart是开放源代码站点SourceForge.net上的一个JAVA项目,它主要用来各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。...
本程序是把图片保存到本地,当然实际应用中,只要在程序和页面中做相关配置即可以使用。 因为图片带点透明,所以windows查看的时候,会根据背景色,颜色有所不同,或是黑色,或是黄色,当配置到网页上,返回到页面...
jFreeChart应用,包含web应用及普通应用程序应用,含有jFreeChart所需的jar包及相关教程,还有两个简单的实例源代码,jFreeChart入门很有帮助
JFreeChart的JAR包和API文档JFreeChart的JAR包和API文档JFreeChart的JAR包和API文档JFreeChart的JAR包和API文档JFreeChart的JAR包和API文档JFreeChart的JAR包和API文档JFreeChart的JAR包和API文档JFreeChart的JAR包...
JFreeChart 教程和例子 ,还有包括安装步骤和JAR包的获取等
jfreechart-1.5.2.jar,jfreechart|jfreechart
利用JFreeChart和struts框架实现一个一个3D柱形图的报表功能
该资源是用JFreeChart、itext、itextasian进行图表演示、pdf操作的案例程序。文件夹Lib包含四个.jar包:iText5.0.6、iTextAsian1.5.2、jcommon1.0.6和jfreechart1.0.13。
Jfreechart 乱码分析和解决方法
JFreeChart在JSP开发中的应用心得.pdf.................