Creating Pie and Doughnut Charts in Excel with Java

Pie charts visually represent data proportions within a whole, while doughnut charts provide a variasion with a hollow center. This tutorial demonstrates Java implementasion for creating thece charts using Free Spire.XLS for Java.

Implementation Steps:

  1. Add Free Spire.XLS for Java dependency via 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>2.2.0</version>
    </dependency>
</dependencies>

Pie Chart Example:

import com.spire.xls.*;
import com.spire.xls.charts.ChartSerie;
import java.awt.*;

public class PieChartGenerator {
    public static void main(String[] args) {
        Workbook workbook = new Workbook();
        Worksheet sheet = workbook.getWorksheets().get(0);

        // Data population
        sheet.getCellRange("A1").setValue("Year");
        sheet.getCellRange("A2").setValue("2020");
        sheet.getCellRange("A3").setValue("2021");
        sheet.getCellRange("A4").setValue("2022");
        
        sheet.getCellRange("B1").setValue("Revenue");
        sheet.getCellRange("B2").setNumberValue(5000);
        sheet.getCellRange("B3").setNumberValue(7500);
        sheet.getCellRange("B4").setNumberValue(9000);

        // Chart configuration
        Chart chart = sheet.getCharts().add(ExcelChartType.Pie);
        chart.setDataRange(sheet.getCellRange("B2:B4"));
        chart.setSeriesDataFromRange(false);
        chart.setChartTitle("Annual Revenue");
        
        ChartSerie series = chart.getSeries().get(0);
        series.setCategoryLabels(sheet.getCellRange("A2:A4"));
        series.setValues(sheet.getCellRange("B2:B4"));
        
        workbook.saveToFile("PieChart.xlsx", ExcelVersion.Version2016);
    }
}

Doughnut Chart Example:

import com.spire.xls.*;
import com.spire.xls.charts.ChartSerie;
import java.awt.*;

public class DoughnutChartGenerator {
    public static void main(String[] args) {
        Workbook workbook = new Workbook();
        Worksheet sheet = workbook.getWorksheets().get(0);

        // Data setup
        sheet.getCellRange("A1").setValue("Region");
        sheet.getCellRange("A2").setValue("North");
        sheet.getCellRange("A3").setValue("South");
        sheet.getCellRange("A4").setValue("East");
        
        sheet.getCellRange("B1").setValue("Sales");
        sheet.getCellRange("B2").setNumberValue(6500);
        sheet.getCellRange("B3").setNumberValue(8200);
        sheet.getCellRange("B4").setNumberValue(9300);

        // Chart configuration
        Chart chart = sheet.getCharts().add(ExcelChartType.Doughnut);
        chart.setDataRange(sheet.getCellRange("B2:B4"));
        chart.setChartTitle("Regional Distribution");
        
        ChartSerie series = chart.getSeries().get(0);
        series.setCategoryLabels(sheet.getCellRange("A2:A4"));
        series.getDataPoints().getDefaultDataPoint().getDataLabels().hasPercentage(true);
        
        workbook.saveToFile("DoughnutChart.xlsx", ExcelVersion.Version2016);
    }
}

Tags: java Excel Data Visualization charts Spire.XLS

Posted on Fri, 03 Jul 2026 16:22:55 +0000 by Diceman