`
youzifei
  • 浏览: 66709 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

jfreechart和poi一些简单的应用

阅读更多

这两天学习了一些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文件对象写入输出流或写入到文件中。

 

 

// 创建一个Excel文件

HSSFWorkbook wb=new HSSFWorkbook();

//获得CreationHelper对象,这个应该是一个帮助类 

//英文对这个类的解释  An object that handles instantiating concrete classes of the various instances one needs for HSSF and XSSF.
        CreationHelper createHelper=wb.getCreationHelper();

// 创建一个Excel的Sheet  
        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包

    结合Apache POI和JFreeChart,你可以轻松地在Java应用程序中生成Excel文件,并在其中插入由JFreeChart创建的各种图表,这在数据分析、报告生成、可视化等方面非常有用。 总之,这些JAR包为Java开发者提供了一套完整...

    jfreechart 1.0.19 源码加文档和依赖包

    JFreeChart是一款强大的Java图表库,它允许开发者创建多种类型的2D图表,如柱状图、饼图、线形图、散点图等,适用于报表、数据分析和可视化应用。1.0.19版本是其稳定的一个版本,包含了丰富的功能和优化。 1. **...

    JFreeChart

    JFreeChart 的强大功能使其在数据可视化领域广泛应用。 **一、JFreeChart的主要特性** 1. **多样的图表类型**:JFreeChart 支持多种图表,满足各种数据展示需求。 - 饼图:显示各部分占总体的比例关系。 - 折线...

    JfreeChart-雷达图与导出

    JFreeChart是一款强大的Java图表库,它允许开发者在Java应用程序或网页中创建多种类型的图表,包括雷达图(也称为蜘蛛网图)。本篇将深入探讨如何利用JFreeChart生成雷达图以及相关的数据导出功能。 **雷达图的使用...

    JfreeChart 示例

    这个示例资源提供了JFreeChart的实践应用,帮助开发者了解如何在Java程序中创建和展示各种图表。 在运行JfreeChart示例之前,我们需要准备以下依赖库: 1. **jcommon-1.0.9.jar**:这是JFreeChart的一个基础库,...

    jfreechart最新版本

    在实际应用中,JFreeChart通常与其他Java库结合使用,例如Apache POI用于读取Excel数据,或者Servlet和JSP用于在Web应用中展示图表。对于初学者,JFreeChart提供了详细的API文档和示例代码,帮助快速上手。对于高级...

    jfreechart做的,读取Excel文件显示数据

    JFreeChart提供了一系列的类和方法来构建和定制图表,例如`ChartFactory`用于创建基础图表,`CategoryDataset`或`TableXYDataset`用于存储数据,而`ChartPanel`则可以将图表嵌入到Java Swing应用中。 对于Excel文件...

    jfreechart---lib.zip

    JFreeChart是完全基于Java语言的开源项目,因此可以使用在Java开发环境中,包括Java应用程序,或者是Java Web应用都没有任何问题。结合iText项目,可将生成的统计图表输出到PDF文件中;结合最新的POI项目,也可以将...

    word+excel+jfreechart例子

    总结来说,这个压缩包中的示例涵盖了Java操作Word、Excel和生成图表(JFreeChart)的基础知识,是学习和提升相关技能的好资源。通过深入研究并理解这些代码,你可以更好地掌握Java在文档处理和数据可视化方面的应用...

    jfreechart生成图片及导出pdf 、excel

    JFreeChart是一款强大的Java图表库,它允许开发者在应用程序、Swing组件或Web应用中创建各种图表,如柱状图、饼图、折线图等。这个库支持丰富的定制选项,使得图表可以按照用户需求进行个性化设计。在这个...

    java里用JFreeChart画柱状图、折线图、雷达图

    在Java编程环境中,JFreeChart库是一个强大的工具,用于创建各种复杂的图表,包括柱状图、折线图和雷达图。这些图表对于数据可视化和数据分析非常有用,可以帮助开发者直观地展示大量信息。以下是对给定文件中每个...

    JAVA用POI从Excel读取数据进行相关统计,JFreeChart绘制图表.pdf

    总结,这个Java应用展示了如何结合Apache POI和JFreeChart进行Excel数据分析和可视化。通过这个过程,开发者可以学习到文件选择、Excel数据处理、对象初始化、统计计算以及图表绘制等多个关键技能,这些都是在数据...

    JFreechart

    - **数据分析**:结合Java的数据处理库(如Apache POI读取Excel数据),JFreeChart可用于分析和展示数据结果。 - **Web应用**:通过Servlet或JSP,JFreeChart能在Web页面上生成图表,提升Web应用的交互性和视觉...

    jfreechart一&amp;二维报表导出为word&amp;pdf&amp;html 一

    例如,要创建一个简单的条形图,你可以使用`JFreeChart chart = ChartFactory.createBarChart()`方法。 导出报表到Word、PDF和HTML需要其他库的支持。对于Word,通常使用Apache POI库;对于PDF,我们可以利用iText...

    JAVA用POI从Excel读取数据进行相关统计,JFreeChart绘制图表.docx

    在Java开发中,处理Excel数据是一种常见的需求,例如进行数据分析和报表生成。Apache POI库提供了操作Microsoft ...在实际应用中,你可能需要根据具体需求进行调整,例如添加错误处理、数据验证和更复杂的统计功能。

    struts、 hibernate、 spring、 jfreechart、 导出excel、 导出pdf 完美整合

    Struts、Hibernate、Spring、JFreeChart以及Excel和PDF导出是Java开发中的关键技术和库,它们在构建高效、可维护的企业级应用中扮演着重要角色。以下是对这些技术的详细说明: 1. **Struts**:Struts是Apache软件...

    jfreechart

    **JFreeChart 深度解析** JFreeChart 是一个为 Java 平台设计的开源图表库,它提供了丰富的...通过深入学习和实践,开发者可以充分利用 JFreeChart 提升应用程序的数据展现能力,让数据更加生动、直观地呈现给用户。

    JFreeChart柱形图所需要的.Jar架包

    在实际开发中,JFreeChart不仅可以用于柱形图,还可以与其他Java库结合,如Apache POI用于在Excel中生成图表,或者与Servlets和JSP一起在Web应用中生成动态图表。此外,JFreeChart也支持导出图表为多种格式,如JPEG...

Global site tag (gtag.js) - Google Analytics