Java создает круговую диаграмму / кольцевую диаграмму в Excel

1. Фон спроса

В связи с потребностями характера работы, я часто соприкасаюсь с большим количеством данных и обрабатываю их, чтобы потом сообщить клиенту. Поэтому, чтобы помочь клиентам быстрее и интуитивнее анализировать и понимать эти абстрактные данные, я часто отображаю данные в виде диаграмм. Сегодня я поделюсь с вами методом создания круговых диаграмм и кольцевых диаграмм в документах Excel с использованием кода в программе Java.

2. Jar пакет импорта

Установите бесплатный пакет Spire.Xls.jar через хранилище Maven и настройте код файла pom.xml следующим образом:

<repositories>
        <repository>
            <id>com.e-iceblue</id>
            <name>e-iceblue</name>
<url>http://repo.e-iceblue.com/nexus/content/groups/public/</url>
        </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.xls.free</artifactId>
        <version>2.2.0</version>
    </dependency>
</dependencies>


Круговая диаграмма

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

import java.awt.*;

public class CreatePieChart {

    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("2002");
        sheet.getCellRange("A3").setValue("2003");
        sheet.getCellRange("A4").setValue("2004");
        sheet.getCellRange("A5").setValue("2005");

        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.Pie);

        //Установить область данных диаграммы
        chart.setDataRange(sheet.getCellRange("B2:B5"));
        chart.setSeriesDataFromRange(false);

        //Установить положение диаграммы
        chart.setLeftColumn(3);
        chart.setTopRow(1);
        chart.setRightColumn(11);
        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);

        //Сохранить документ
        workbook.saveToFile("PieChart.xlsx", ExcelVersion.Version2016);
    }
}

image

Кольцевая диаграмма

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) {

        //Создать объект Workbook
        Workbook workbook = new Workbook();

        //Получить первый лист
        Worksheet sheet = workbook.getWorksheets().get(0);

        //Получить первый лист
        sheet.getCellRange("A1").setValue("страна");
        sheet.getCellRange("A2").setValue("Япония");
        sheet.getCellRange("A3").setValue("Китай");
        sheet.getCellRange("A4").setValue("Соединенные Штаты");
        sheet.getCellRange("A5").setValue("Россия");

        sheet.getCellRange("B1").setValue("Продажи");
        sheet.getCellRange("B2").setNumberValue(6000);
        sheet.getCellRange("B3").setNumberValue(8000);
        sheet.getCellRange("B4").setNumberValue(9000);
        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("A1:B5"));
        chart.setSeriesDataFromRange(false);

        //Установить положение диаграммы
        chart.setLeftColumn(3);
        chart.setTopRow(1);
        chart.setRightColumn(11);
        chart.setBottomRow(20);

        //Установить заголовок диаграммы
        chart.setChartTitle("Доля рынка");
        chart.getChartTitleArea().isBold(true);
        chart.getChartTitleArea().setSize(12);

        //Установить цвет серии
        ChartSeries series = chart.getSeries();
        for (int i = 0 ; i < series.size() ; i++) {
            ChartSerie cs = series.get(i);
            cs.getDataPoints().getDefaultDataPoint().getDataLabels().hasPercentage(true);
        }

        //Установите положение легенды
        chart.getLegend().setPosition(LegendPositionType.Top);

        //Сохранить документ
        workbook.saveToFile("DoughnutChart.xlsx", ExcelVersion.Version2016);
    }
}

image
Tags:
java

You can't comment this post because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author's username will be hidden by an alias.