2020-12-02

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.

<repositories> <repository>  <id>com.e-iceblue</id>  <url></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(); }}

 









原文转载:http://www.shaoqun.com/a/494626.html

马士基集团:https://www.ikjzd.com/w/1296

易趣:https://www.ikjzd.com/w/210

easel:https://www.ikjzd.com/w/1721


一、概述Excel中可支持多种不同类型的图表,本文介绍如何绘制分离型饼图和环形图。其中,分离型饼图的绘制可分为整体分离型(即设置饼图分离程度)和局部分离(即设置点爆炸型值)两种情况。下面将以Java程序代码介绍如何在Excel中实现以上图形。二、程序环境Spire.Xls.jarJdk1.8.0(版本>=1.6.0即可)IDEA注:Jar使用的是FreeSpire.XLSforJava(免费
extra:extra
麦言:麦言
6款值得你用的亚马逊定价工具!:6款值得你用的亚马逊定价工具!
广告中断后导致转化下降ACOS上升 该怎么办呢?:广告中断后导致转化下降ACOS上升 该怎么办呢?
2020年5。19北京免费景点有哪些?:2020年5。19北京免费景点有哪些?

No comments:

Post a Comment