这两天学习了一些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
分享到:
相关推荐
结合Apache POI和JFreeChart,你可以轻松地在Java应用程序中生成Excel文件,并在其中插入由JFreeChart创建的各种图表,这在数据分析、报告生成、可视化等方面非常有用。 总之,这些JAR包为Java开发者提供了一套完整...
JFreeChart是一款强大的Java图表库,它允许开发者创建多种类型的2D图表,如柱状图、饼图、线形图、散点图等,适用于报表、数据分析和可视化应用。1.0.19版本是其稳定的一个版本,包含了丰富的功能和优化。 1. **...
JFreeChart 的强大功能使其在数据可视化领域广泛应用。 **一、JFreeChart的主要特性** 1. **多样的图表类型**:JFreeChart 支持多种图表,满足各种数据展示需求。 - 饼图:显示各部分占总体的比例关系。 - 折线...
JFreeChart是一款强大的Java图表库,它允许开发者在Java应用程序或网页中创建多种类型的图表,包括雷达图(也称为蜘蛛网图)。本篇将深入探讨如何利用JFreeChart生成雷达图以及相关的数据导出功能。 **雷达图的使用...
这个示例资源提供了JFreeChart的实践应用,帮助开发者了解如何在Java程序中创建和展示各种图表。 在运行JfreeChart示例之前,我们需要准备以下依赖库: 1. **jcommon-1.0.9.jar**:这是JFreeChart的一个基础库,...
在实际应用中,JFreeChart通常与其他Java库结合使用,例如Apache POI用于读取Excel数据,或者Servlet和JSP用于在Web应用中展示图表。对于初学者,JFreeChart提供了详细的API文档和示例代码,帮助快速上手。对于高级...
JFreeChart提供了一系列的类和方法来构建和定制图表,例如`ChartFactory`用于创建基础图表,`CategoryDataset`或`TableXYDataset`用于存储数据,而`ChartPanel`则可以将图表嵌入到Java Swing应用中。 对于Excel文件...
JFreeChart是完全基于Java语言的开源项目,因此可以使用在Java开发环境中,包括Java应用程序,或者是Java Web应用都没有任何问题。结合iText项目,可将生成的统计图表输出到PDF文件中;结合最新的POI项目,也可以将...
总结来说,这个压缩包中的示例涵盖了Java操作Word、Excel和生成图表(JFreeChart)的基础知识,是学习和提升相关技能的好资源。通过深入研究并理解这些代码,你可以更好地掌握Java在文档处理和数据可视化方面的应用...
JFreeChart是一款强大的Java图表库,它允许开发者在应用程序、Swing组件或Web应用中创建各种图表,如柱状图、饼图、折线图等。这个库支持丰富的定制选项,使得图表可以按照用户需求进行个性化设计。在这个...
在Java编程环境中,JFreeChart库是一个强大的工具,用于创建各种复杂的图表,包括柱状图、折线图和雷达图。这些图表对于数据可视化和数据分析非常有用,可以帮助开发者直观地展示大量信息。以下是对给定文件中每个...
总结,这个Java应用展示了如何结合Apache POI和JFreeChart进行Excel数据分析和可视化。通过这个过程,开发者可以学习到文件选择、Excel数据处理、对象初始化、统计计算以及图表绘制等多个关键技能,这些都是在数据...
- **数据分析**:结合Java的数据处理库(如Apache POI读取Excel数据),JFreeChart可用于分析和展示数据结果。 - **Web应用**:通过Servlet或JSP,JFreeChart能在Web页面上生成图表,提升Web应用的交互性和视觉...
例如,要创建一个简单的条形图,你可以使用`JFreeChart chart = ChartFactory.createBarChart()`方法。 导出报表到Word、PDF和HTML需要其他库的支持。对于Word,通常使用Apache POI库;对于PDF,我们可以利用iText...
在Java开发中,处理Excel数据是一种常见的需求,例如进行数据分析和报表生成。Apache POI库提供了操作Microsoft ...在实际应用中,你可能需要根据具体需求进行调整,例如添加错误处理、数据验证和更复杂的统计功能。
Struts、Hibernate、Spring、JFreeChart以及Excel和PDF导出是Java开发中的关键技术和库,它们在构建高效、可维护的企业级应用中扮演着重要角色。以下是对这些技术的详细说明: 1. **Struts**:Struts是Apache软件...
**JFreeChart 深度解析** JFreeChart 是一个为 Java 平台设计的开源图表库,它提供了丰富的...通过深入学习和实践,开发者可以充分利用 JFreeChart 提升应用程序的数据展现能力,让数据更加生动、直观地呈现给用户。
在实际开发中,JFreeChart不仅可以用于柱形图,还可以与其他Java库结合,如Apache POI用于在Excel中生成图表,或者与Servlets和JSP一起在Web应用中生成动态图表。此外,JFreeChart也支持导出图表为多种格式,如JPEG...