A pie chart is a circular chart divided into sectors, and each sector represents a proportionate part of the whole. It presents data in the form of graphs, which makes it easy for users to analyze and compare data. As for the doughnut chart, it performs the same function as the pie chart, except that it has a "hole" in the center. This article will demonstrate how to programmatically create a pie chart or a doughnut chart in Excel using Spire.XLS for Java.
Install Spire.XLS for Java
First of all, you're required to add the Spire.Xls.jar file as a dependency in your Java program. The JAR file can be downloaded from this link. If you use Maven, you can easily import the JAR file in your application by adding the following code to your project's pom.xml file.
<repositories> <repository> <id>com.e-iceblue</id> <name>e-iceblue</name> <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url> </repository> </repositories> <dependencies> <dependency> <groupId>e-iceblue</groupId> <artifactId>spire.xls</artifactId> <version>14.11.0</version> </dependency> </dependencies>
Create a Pie Chart in Excel
The detailed steps are as follows:
- Create a Workbook object.
- Get a specified worksheet using Workbook.getWorksheets().get() method.
- Add some data to specified cells and set the cell styles.
- Add a pie chart to the worksheet using Worksheet.getCharts().add(ExcelChartType.Pie) method.
- Set data range for the chart using Chart.setDataRange() method.
- Set the position and title of the chart.
- Get a specified series in the chart and set category labels and values for the series using ChartSerie.setCategoryLabels() and ChartSerie.setValues() methods.
- Show data labels for data points.
- Save the result file using Workbook.saveToFile() method.
- Java
import com.spire.xls.*; import com.spire.xls.charts.ChartSerie; import java.awt.*; public class CreatePieChart { public static void main(String[] args) { //Create a Workbook object Workbook workbook = new Workbook(); //Get the first worksheet Worksheet sheet = workbook.getWorksheets().get(0); //Insert data to specified cells sheet.getCellRange("A1").setValue("Year"); sheet.getCellRange("A2").setValue("2002"); sheet.getCellRange("A3").setValue("2003"); sheet.getCellRange("A4").setValue("2004"); sheet.getCellRange("A5").setValue("2005"); sheet.getCellRange("B1").setValue("Sales"); sheet.getCellRange("B2").setNumberValue(4000); sheet.getCellRange("B3").setNumberValue(6000); sheet.getCellRange("B4").setNumberValue(7000); sheet.getCellRange("B5").setNumberValue(8500); //Set cell styles 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:B5").getCellStyle().setVerticalAlignment(VerticalAlignType.Center); sheet.getCellRange("A1:B5").getCellStyle().setHorizontalAlignment(HorizontalAlignType.Center); //Set number format sheet.getCellRange("B2:C5").getCellStyle().setNumberFormat("\"$\"#,##0"); //Add a pie chart to the worksheet Chart chart = sheet.getCharts().add(ExcelChartType.Pie); //Set data range for the chart chart.setDataRange(sheet.getCellRange("B2:B5")); chart.setSeriesDataFromRange(false); //Set position of the chart chart.setLeftColumn(3); chart.setTopRow(1); chart.setRightColumn(11); chart.setBottomRow(20); //Set and format chart title chart.setChartTitle("Sales by year"); chart.getChartTitleArea().isBold(true); chart.getChartTitleArea().setSize(12); //Get a specified series in the chart ChartSerie cs = chart.getSeries().get(0); //Set category labels for the series cs.setCategoryLabels(sheet.getCellRange("A2:A5")); //Set values for the series cs.setValues(sheet.getCellRange("B2:B5")); //Show data labels for data points cs.getDataPoints().getDefaultDataPoint().getDataLabels().hasValue(true); //Save the result file workbook.saveToFile("PieChart.xlsx", ExcelVersion.Version2016); } }
Create a Doughnut Chart in Excel
The detailed steps are as follows:
- Create a Workbook object.
- Get a specified worksheet using Workbook.getWorksheets().get() method.
- Add some data to specified cells and set the cell styles.
- Add a doughnut chart to the worksheet using Worksheet.getCharts().add(ExcelChartType.Doughnut) method.
- Set data range for the chart using Chart.setDataRange() method.
- Set the position and title of the chart.
- Show data labels for data points.
- Set the legend position of the chart using Chart.getLegend().setPosition() method.
- Save the result file using Workbook.saveToFile() method.
- Java
import com.spire.xls.*; import com.spire.xls.charts.ChartSerie; import com.spire.xls.charts.ChartSeries; import java.awt.*; public class CreateDoughnutChart { public static void main(String[] args) { //Create a Workbook object Workbook workbook = new Workbook(); //Get the first worksheet Worksheet sheet = workbook.getWorksheets().get(0); //Insert data to specified cells sheet.getCellRange("A1").setValue("Country"); sheet.getCellRange("A2").setValue("Cuba"); sheet.getCellRange("A3").setValue("Mexico"); sheet.getCellRange("A4").setValue("German"); sheet.getCellRange("A5").setValue("Japan"); sheet.getCellRange("B1").setValue("Sales"); sheet.getCellRange("B2").setNumberValue(6000); sheet.getCellRange("B3").setNumberValue(8000); sheet.getCellRange("B4").setNumberValue(9000); sheet.getCellRange("B5").setNumberValue(8500); //Set cell styles 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:B5").getCellStyle().setVerticalAlignment(VerticalAlignType.Center); sheet.getCellRange("A1:B5").getCellStyle().setHorizontalAlignment(HorizontalAlignType.Center); //Set number format sheet.getCellRange("B2:C5").getCellStyle().setNumberFormat("\"$\"#,##0"); //Add a doughnut chart to the worksheet Chart chart = sheet.getCharts().add(ExcelChartType.Doughnut); //Set data range for chart chart.setDataRange(sheet.getCellRange("A1:B5")); chart.setSeriesDataFromRange(false); //Set position of the chart chart.setLeftColumn(3); chart.setTopRow(1); chart.setRightColumn(11); chart.setBottomRow(20); //Set chart title chart.setChartTitle("Market share by country"); chart.getChartTitleArea().isBold(true); chart.getChartTitleArea().setSize(12); //Show data labels for data points ChartSeries series = chart.getSeries(); for (int i = 0 ; i < series.size() ; i++) { ChartSerie cs = series.get(i); cs.getDataPoints().getDefaultDataPoint().getDataLabels().hasPercentage(true); } //Set the legend position of the chart chart.getLegend().setPosition(LegendPositionType.Top); //Save the result file workbook.saveToFile("DoughnutChart.xlsx", ExcelVersion.Version2016); } }
Apply for a Temporary License
If you'd like to remove the evaluation message from the generated documents, or to get rid of the function limitations, please request a 30-day trial license for yourself.