zoukankan      html  css  js  c++  java
  • Java 在Excel中添加分离型饼图、环形图

    一、概述

    Excel中可支持多种不同类型的图表,本文介绍如何绘制分离型饼图和环形图。其中,分离型饼图的绘制可分为整体分离型(即设置饼图分离程度)局部分离(即设置点爆炸型值)两种情况。下面将以Java程序代码介绍如何在Excel中实现以上图形。

    二、程序环境

    • Spire.Xls.jar
    • Jdk 1.8.0(版本>=1.6.0即可)
    • IDEA

    注:Jar使用的是Free Spire.XLS for Java(免费版)中的Spire.Xls.jar。编辑代码前,导入jar到Java程序,两种方法可导入(任选其一即可):

    1. 下载jar包,解压导入lib文件夹下的jar到Java程序;

    2. maven程序中配置pom.xml文件,指定spire的maven路径及依赖,参考如下:

    <repositories>
        <repository>
            <id>com.e-iceblue</id>
            <url>http://repo.e-iceblue.cn/repository/maven-public/</url>
         </repository>
    </repositories>
    <dependencies>
    <dependency>
            <groupId>e-iceblue</groupId>
      <artifactId>spire.xls.free</artifactId>
      <version>3.9.1</version>
    </dependency>
    </dependencies>

    配置完成后,导入jar到程序。

    三、Java代码

    1. 分离型饼图

    import com.spire.xls.*;
    import com.spire.xls.charts.ChartSerie;
    
    import java.awt.*;
    
    public class ExplodedPieChart {
        public static void main(String[] args) {
            //创建Workbook对象
            Workbook workbook = new Workbook();
    
            //获取第一个工作表
            Worksheet sheet = workbook.getWorksheets().get(0);
    
            //将图表数据写入工作表
            sheet.getCellRange("A1").setValue("年份");
            sheet.getCellRange("A2").setValue("2017");
            sheet.getCellRange("A3").setValue("2018");
            sheet.getCellRange("A4").setValue("2019");
            sheet.getCellRange("A5").setValue("2020");
    
            sheet.getCellRange("B1").setValue("销售额");
            sheet.getCellRange("B2").setNumberValue(4000);
            sheet.getCellRange("B3").setNumberValue(6000);
            sheet.getCellRange("B4").setNumberValue(7000);
            sheet.getCellRange("B5").setNumberValue(8500);
    
            //设置单元格样式
            sheet.getCellRange("A1:B1").setRowHeight(15);
            sheet.getCellRange("A1:B1").getCellStyle().setColor(Color.darkGray);
            sheet.getCellRange("A1:B1").getCellStyle().getExcelFont().setColor(Color.white);
            sheet.getCellRange("A1:B1").getCellStyle().setVerticalAlignment(VerticalAlignType.Center);
            sheet.getCellRange("A1:B1").getCellStyle().setHorizontalAlignment(HorizontalAlignType.Center);
            sheet.getCellRange("B2:C5").getCellStyle().setNumberFormat(""¥"#,##0");
    
            //添加整体分离型饼图
            Chart piechart = sheet.getCharts().add(ExcelChartType.Pie);
            //设置图表数据区域
            piechart.setDataRange(sheet.getCellRange("B2:B5"));
            piechart.setSeriesDataFromRange(false);
            //设置图表位置
            piechart.setLeftColumn(4);
            piechart.setTopRow(1);
            piechart.setRightColumn(10);
            piechart.setBottomRow(20);
            //设置图表标题
            piechart.setChartTitle("年销售额");
            piechart.getChartTitleArea().isBold(true);
            piechart.getChartTitleArea().setSize(12);
            //设置系列标签
            ChartSerie cs = piechart.getSeries().get(0);
            cs.setCategoryLabels(sheet.getCellRange("A2:A5"));
            cs.setValues(sheet.getCellRange("B2:B5"));
            cs.getDataPoints().getDefaultDataPoint().getDataLabels().hasValue(true);
            piechart.getPlotArea().getFill().setVisible(false);
    
            //设置饼图整体分离
            for (int i = 0; i < piechart.getSeries().getCount(); i++)
            {
                piechart.getSeries().get(i).getDataFormat().setPercent(20);
            }
    
    
            //添加局部分离型饼图
            Chart piechart1 = sheet.getCharts().add(ExcelChartType.Pie);
            piechart1.setDataRange(sheet.getCellRange("B2:B5"));
            piechart1.setSeriesDataFromRange(false);
            piechart1.setLeftColumn(11);
            piechart1.setTopRow(1);
            piechart1.setRightColumn(17);
            piechart1.setBottomRow(20);
            piechart1.setChartTitle("年销售额");
            piechart1.getChartTitleArea().isBold(true);
            piechart1.getChartTitleArea().setSize(12);
            ChartSerie cs1 = piechart1.getSeries().get(0);
            cs1.setCategoryLabels(sheet.getCellRange("A2:A5"));
            cs1.setValues(sheet.getCellRange("B2:B5"));
            cs1.getDataPoints().getDefaultDataPoint().getDataLabels().hasValue(true);
            piechart1.getPlotArea().getFill().setVisible(false);
            //设置饼图局部分离
            piechart1.getSeries().get(0).getDataPoints().get(1).getDataFormat().setPercent(20);
    
            //保存文档
            workbook.saveToFile("ExplodedPieChart.xlsx", ExcelVersion.Version2016);
            workbook.dispose();
        }
    }

     

    2. 分离型环形图

    import com.spire.xls.*;
    import com.spire.xls.charts.ChartSerie;
    
    import java.awt.*;
    
    public class ExplodedDoughnutChart {
        public static void main(String[] args) {
            //创建Workbook对象
            Workbook workbook = new Workbook();
    
            //获取第一个工作表
            Worksheet sheet = workbook.getWorksheets().get(0);
    
            //将图表数据写入工作表
            sheet.getCellRange("A1").setValue("年份");
            sheet.getCellRange("A2").setValue("2017");
            sheet.getCellRange("A3").setValue("2018");
            sheet.getCellRange("A4").setValue("2019");
            sheet.getCellRange("A5").setValue("2020");
            sheet.getCellRange("B1").setValue("销售额");
            sheet.getCellRange("B2").setNumberValue(4000);
            sheet.getCellRange("B3").setNumberValue(6000);
            sheet.getCellRange("B4").setNumberValue(7000);
            sheet.getCellRange("B5").setNumberValue(8500);
    
            //设置单元格样式
            sheet.getCellRange("A1:B1").setRowHeight(15);
            sheet.getCellRange("A1:B1").getCellStyle().setColor(Color.darkGray);
            sheet.getCellRange("A1:B1").getCellStyle().getExcelFont().setColor(Color.white);
            sheet.getCellRange("A1:B1").getCellStyle().setVerticalAlignment(VerticalAlignType.Center);
            sheet.getCellRange("A1:B1").getCellStyle().setHorizontalAlignment(HorizontalAlignType.Center);
            sheet.getCellRange("B2:C5").getCellStyle().setNumberFormat(""¥"#,##0");
    
            //添加环形图
            Chart chart = sheet.getCharts().add(ExcelChartType.Doughnut);
            //设置图表数据区域
            chart.setDataRange(sheet.getCellRange("B2:B5"));
            chart.setSeriesDataFromRange(false);
            //设置图表位置
            chart.setLeftColumn(4);
            chart.setTopRow(1);
            chart.setRightColumn(10);
            chart.setBottomRow(20);
            //设置图表标题
            chart.setChartTitle("年销售额");
            chart.getChartTitleArea().isBold(true);
            chart.getChartTitleArea().setSize(12);
    
            //设置系列标签
            ChartSerie cs = chart.getSeries().get(0);
            cs.setCategoryLabels(sheet.getCellRange("A2:A5"));
            cs.setValues(sheet.getCellRange("B2:B5"));
            cs.getDataPoints().getDefaultDataPoint().getDataLabels().hasValue(true);
            chart.getPlotArea().getFill().setVisible(false);
    
    
    
            //添加分离型环形图
            Chart chart1 = sheet.getCharts().add(ExcelChartType.DoughnutExploded);
            chart1.setDataRange(sheet.getCellRange("B2:B5"));
            chart1.setSeriesDataFromRange(false);
            chart1.setLeftColumn(11);
            chart1.setTopRow(1);
            chart1.setRightColumn(17);
            chart1.setBottomRow(20);
            chart1.setChartTitle("年销售额");
            chart1.getChartTitleArea().isBold(true);
            chart1.getChartTitleArea().setSize(12);
            ChartSerie cs1 = chart1.getSeries().get(0);
            cs1.setCategoryLabels(sheet.getCellRange("A2:A5"));
            cs1.setValues(sheet.getCellRange("B2:B5"));
            cs1.getDataPoints().getDefaultDataPoint().getDataLabels().hasValue(true);
            chart1.getPlotArea().getFill().setVisible(false);
    
            //保存文档
            workbook.saveToFile("ExplodedDoughnutChart.xlsx",FileFormat.Version2013);
            workbook.dispose();
        }
    }

  • 相关阅读:
    python3图片转化成字符画
    ubuntu 18.04安装PIL(Python Imaging Library )
    Ubuntu 18.04安装钉钉
    django 使用iframe跨域请求
    django 自定义日志字段
    Ubuntu18.04下安装搜狗输入法(亲测有效)
    Nginx 配置指令手册
    js闭包Demo
    自己写了一个无缝滚动的插件(jQuery)
    写JQuery 插件 什么?你还不会写JQuery 插件
  • 原文地址:https://www.cnblogs.com/Yesi/p/14075039.html
Copyright © 2011-2022 走看看