Java使用POI生成饼状图导出到word文档(饼状图)

本篇文章主要介绍,如何使用Apache POI组件生成饼状图导出到word文档中,具体步骤看下文。

一、实现效果

Java使用POI技术生成饼状图导出到word文档中,最终生成的饼状图如下所示:

Java使用POI生成饼状图导出到word文档(饼状图)

 二、环境准备

  • 编程语言:Java
  • 第三方依赖:Apache POI

Apache POI依赖代码如下所示:

<dependencies>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>4.1.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml-schemas</artifactId>
        <version>4.1.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>4.1.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-scratchpad</artifactId>
        <version>4.1.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.xmlbeans</groupId>
        <artifactId>xmlbeans</artifactId>
        <version>3.1.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>ooxml-schemas</artifactId>
        <version>1.4</version>
    </dependency>
</dependencies>

三、具体代码

POI生成饼状图代码如下所示(代码中几乎每个语句都写有注释,方便阅读和理解):

package com.gitee.zhuyb.chart;

import org.apache.poi.util.Units;
import org.apache.poi.xddf.usermodel.chart.*;
import org.apache.poi.xwpf.usermodel.XWPFChart;
import org.apache.poi.xwpf.usermodel.XWPFDocument;

import java.io.FileOutputStream;

/**
 * @version 1.0.0
 * @Description: poi生成饼图
 * @Date: 2021/12/25 20:04
 * @Copyright (C) ZhuYouBin
 */
public class PieChart {
    public static void main(String[] args) throws Exception {
        // 1、创建word文档对象
        XWPFDocument document = new XWPFDocument();
        // 2、创建chart图表对象,抛出异常
        XWPFChart chart = document.createChart(15 * Units.EMU_PER_CENTIMETER, 10 * Units.EMU_PER_CENTIMETER);

        // 3、图表相关设置
        chart.setTitleText("使用POI创建的饼图"); // 图表标题
        chart.setTitleOverlay(false); // 图例是否覆盖标题

        // 4、图例设置
        XDDFChartLegend legend = chart.getOrAddLegend();
        legend.setPosition(LegendPosition.TOP); // 图例位置:上下左右

        // 5、X轴(分类轴)相关设置:饼图中的图例显示
        String[] xAxisData = new String[] {
                "2021-01","2021-02","2021-03","2021-04","2021-05","2021-06",
                "2021-07","2021-08","2021-09","2021-10","2021-11","2021-12",
        };
        XDDFCategoryDataSource xAxisSource = XDDFDataSourcesFactory.fromArray(xAxisData); // 设置分类数据

        // 6、Y轴(值轴)相关设置:饼图中的圆形显示
        Integer[] yAxisData = new Integer[]{
                10, 35, 21, 46, 79, 88,
                39, 102, 71, 28, 99, 57
        };
        XDDFNumericalDataSource<Integer> yAxisSource = XDDFDataSourcesFactory.fromArray(yAxisData); // 设置值数据

        // 7、创建饼图对象,饼状图不需要X,Y轴,只需要数据集即可
        XDDFPieChartData pieChart = (XDDFPieChartData) chart.createData(ChartTypes.PIE, null, null);

        // 8、加载饼图数据集
        XDDFPieChartData.Series pieSeries = (XDDFPieChartData.Series) pieChart.addSeries(xAxisSource, yAxisSource);
        pieSeries.setTitle("粉丝数", null); // 系列提示标题

        // 9、绘制饼图
        chart.plot(pieChart);

        // 10、输出到word文档
        FileOutputStream fos = new FileOutputStream("H:\\poi\\pieChart.docx");
        document.write(fos); // 导出word

        // 11、关闭流
        fos.close();
        document.close();
    }
}

以上,就是Java使用POI生成饼状图导出到word文档(饼状图)的步骤。Java使用POI生成饼状图导出到word文档(饼状图)

上一篇:R语言GGPLOT2绘制圆环图雷达图/星形图/极坐标图/径向图Polar Chart可视化分析汽车性能数据


下一篇:echarts拆成清晰化