Java 在Excel中添加分離型餅圖、環(huán)形圖的方法
一、概述
Excel中可支持多種不同類型的圖表,本文介紹如何繪制分離型餅圖和環(huán)形圖。其中,分離型餅圖的繪制可分為整體分離型(即設(shè)置餅圖分離程度)和局部分離(即設(shè)置點(diǎn)爆炸型值)兩種情況。下面將以Java程序代碼介紹如何在Excel中實(shí)現(xiàn)以上圖形。
二、程序環(huán)境
- Spire.Xls.jar
- Jdk 1.8.0(版本>=1.6.0即可)
- IDEA
注:Jar使用的是Free Spire.XLS for Java(免費(fèi)版)中的Spire.Xls.jar。編輯代碼前,導(dǎo)入jar到Java程序,兩種方法可導(dǎo)入(任選其一即可):
1. 下載jar包,解壓導(dǎo)入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>
配置完成后,導(dǎo)入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) {
//創(chuàng)建Workbook對(duì)象
Workbook workbook = new Workbook();
//獲取第一個(gè)工作表
Worksheet sheet = workbook.getWorksheets().get(0);
//將圖表數(shù)據(jù)寫入工作表
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);
//設(shè)置單元格樣式
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);
//設(shè)置圖表數(shù)據(jù)區(qū)域
piechart.setDataRange(sheet.getCellRange("B2:B5"));
piechart.setSeriesDataFromRange(false);
//設(shè)置圖表位置
piechart.setLeftColumn(4);
piechart.setTopRow(1);
piechart.setRightColumn(10);
piechart.setBottomRow(20);
//設(shè)置圖表標(biāo)題
piechart.setChartTitle("年銷售額");
piechart.getChartTitleArea().isBold(true);
piechart.getChartTitleArea().setSize(12);
//設(shè)置系列標(biāo)簽
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);
//設(shè)置餅圖整體分離
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);
//設(shè)置餅圖局部分離
piechart1.getSeries().get(0).getDataPoints().get(1).getDataFormat().setPercent(20);
//保存文檔
workbook.saveToFile("ExplodedPieChart.xlsx", ExcelVersion.Version2016);
workbook.dispose();
}
}

2. 分離型環(huán)形圖
import com.spire.xls.*;
import com.spire.xls.charts.ChartSerie;
import java.awt.*;
public class ExplodedDoughnutChart {
public static void main(String[] args) {
//創(chuàng)建Workbook對(duì)象
Workbook workbook = new Workbook();
//獲取第一個(gè)工作表
Worksheet sheet = workbook.getWorksheets().get(0);
//將圖表數(shù)據(jù)寫入工作表
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);
//設(shè)置單元格樣式
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");
//添加環(huán)形圖
Chart chart = sheet.getCharts().add(ExcelChartType.Doughnut);
//設(shè)置圖表數(shù)據(jù)區(qū)域
chart.setDataRange(sheet.getCellRange("B2:B5"));
chart.setSeriesDataFromRange(false);
//設(shè)置圖表位置
chart.setLeftColumn(4);
chart.setTopRow(1);
chart.setRightColumn(10);
chart.setBottomRow(20);
//設(shè)置圖表標(biāo)題
chart.setChartTitle("年銷售額");
chart.getChartTitleArea().isBold(true);
chart.getChartTitleArea().setSize(12);
//設(shè)置系列標(biāo)簽
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);
//添加分離型環(huán)形圖
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();
}
}

以上就是Java 在Excel中添加分離型餅圖、環(huán)形圖的方法的詳細(xì)內(nèi)容,更多關(guān)于Java excel添加圖表的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Java中利用Alibaba開源技術(shù)EasyExcel來操作Excel表的示例代碼
- Java 設(shè)置Excel條件格式示例代碼(高亮條件值、應(yīng)用單元格值/公式/數(shù)據(jù)條等類型)
- Java中Easypoi實(shí)現(xiàn)excel多sheet表導(dǎo)入導(dǎo)出功能
- Java利用POI讀寫Excel文件工具類
- java讀取簡單excel通用工具類
- java讀取excel表格的方法
- java 使用poi 導(dǎo)入Excel數(shù)據(jù)到數(shù)據(jù)庫的步驟
- 基于Java8實(shí)現(xiàn)提高Excel讀寫效率
- vue通過接口直接下載java生成好的Excel表格案例
- Java 導(dǎo)出excel進(jìn)行換行的案例
- Java 如何快速,優(yōu)雅的實(shí)現(xiàn)導(dǎo)出Excel
相關(guān)文章
Java?導(dǎo)出Excel增加下拉框選項(xiàng)
這篇文章主要介紹了Java?導(dǎo)出Excel增加下拉框選項(xiàng),excel對(duì)于下拉框較多選項(xiàng)的,需要使用隱藏工作簿來解決,使用函數(shù)取值來做選項(xiàng),下文具體的操作詳情,需要的小伙伴可以參考一下2022-04-04
Spring Data Jpa實(shí)現(xiàn)自定義repository轉(zhuǎn)DTO
這篇文章主要介紹了Spring Data Jpa實(shí)現(xiàn)自定義repository轉(zhuǎn)DTO,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
Java中利用BitMap位圖實(shí)現(xiàn)海量級(jí)數(shù)據(jù)去重
有許多方法可以用來去重,比如使用列表、集合等等,但這些方法通常只適用于一般情況,然而,當(dāng)涉及到大量數(shù)據(jù)去重時(shí),常見的 Java Set、List,甚至是 Java 8 的新特性 Stream 流等方式就顯得不太合適了,本文給大家介紹了Java中利用BitMap位圖實(shí)現(xiàn)海量級(jí)數(shù)據(jù)去重2024-04-04
Java使用Lambda表達(dá)式查找list集合中是否包含某值問題
Java使用Lambda表達(dá)式查找list集合中是否包含某值的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06
通過實(shí)例了解如何在JavaWeb實(shí)現(xiàn)文件下載
這篇文章主要介紹了通過實(shí)例了解如何在JavaWeb實(shí)現(xiàn)文件下載,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
idea中javaweb的jsp頁面圖片加載不出來問題及解決
這篇文章主要介紹了idea中javaweb的jsp頁面圖片加載不出來問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07
使用Spring RestTemplate 詳解實(shí)踐使用及拓展增強(qiáng)
這篇文章主要介紹了使用Spring RestTemplate 詳解實(shí)踐使用及拓展增強(qiáng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10

