Как стать автором
Обновить

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
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.