Создание или обновление диаграмм PowerPoint Presentation в PHP
Обзор
Эта статья описывает, как создавать диаграммы PowerPoint Presentation на Java. Вы также можете обновлять диаграммы. В статье рассматриваются следующие темы.
Диаграмма: Обычная
- Java Создать диаграмму PowerPoint
- Java Создать диаграмму презентации
- Java Создать диаграмму PowerPoint Presentation
Диаграмма: Точечная
- Java Создать точечную диаграмму
- Java Создать точечную диаграмму PowerPoint
- Java Создать точечную диаграмму PowerPoint Presentation
Диаграмма: Круговая
- Java Создать круговую диаграмму
- Java Создать круговую диаграмму PowerPoint
- Java Создать круговую диаграмму PowerPoint Presentation
Диаграмма: Древовидная карта
- Java Создать диаграмму Древовидная карта
- Java Создать диаграмму Древовидная карта PowerPoint
- Java Создать диаграмму Древовидная карта PowerPoint Presentation
Диаграмма: Акции
- Java Создать диаграмму акций
- Java Создать диаграмму акций PowerPoint
- Java Создать диаграмму акций PowerPoint Presentation
Диаграмма: Box and Whisker
- Java Создать диаграмму Box and Whisker
- Java Создать диаграмму Box and Whisker PowerPoint
- Java Создать диаграмму Box and Whisker PowerPoint Presentation
Диаграмма: Воронка
- Java Создать диаграмму воронка
- Java Создать диаграмму воронка PowerPoint
- Java Создать диаграмму воронка PowerPoint Presentation
Диаграмма: Sunburst
- Java Создать диаграмму Sunburst
- Java Создать диаграмму Sunburst PowerPoint
- Java Создать диаграмму Sunburst PowerPoint Presentation
Диаграмма: Гистограмма
- Java Создать гистограмму
- Java Создать гистограмму PowerPoint
- Java Создать гистограмму PowerPoint Presentation
Диаграмма: Радар
- Java Создать радарную диаграмму
- Java Создать радарную диаграмму PowerPoint
- Java Создать радарную диаграмму PowerPoint Presentation
Диаграмма: Мультикатегория
- Java Создать диаграмму мультикатегория
- Java Создать диаграмму мультикатегория PowerPoint
- Java Создать диаграмму мультикатегория PowerPoint Presentation
Диаграмма: Карта
Действие: Обновить диаграмму
- Java Обновить диаграмму PowerPoint
- Java Обновить диаграмму презентации
- Java Обновить диаграмму PowerPoint Presentation
Создание диаграмм
Диаграммы помогают быстро визуализировать данные и получать инсайты, которые могут быть неочевидными из таблицы или электронных таблиц.
Почему создают диаграммы?
Используя диаграммы, вы можете
- агрегировать, конденсировать или суммировать большие объёмы данных на одном слайде презентации
- выявлять закономерности и тенденции в данных
- определять направление и динамику данных во времени или относительно конкретных единиц измерения
- обнаруживать выбросы, аномалии, отклонения, ошибки, бессмысленные данные и т.п.
- эффективно передавать сложные данные
В PowerPoint вы можете создавать диаграммы через функцию вставки, которая предоставляет шаблоны для множества типов диаграмм. С помощью Aspose.Slides вы можете создавать обычные диаграммы (на основе популярных типов) и пользовательские диаграммы.
Создание обычных диаграмм
Steps: Create Chart
- Steps: Create PowerPoint Chart
- Steps: Create Presentation Chart
- Steps: Create PowerPoint Presentation Chart
Code Steps:
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Добавьте диаграмму с данными и укажите желаемый тип диаграммы.
- Добавьте заголовок для диаграммы.
- Получите доступ к листу данных диаграммы.
- Очистите все серии и категории по умолчанию.
- Добавьте новые серии и категории.
- Добавьте новые данные для серии диаграммы.
- Добавьте цвет заливки для серии диаграммы.
- Добавьте подписи для серии диаграммы.
- Сохраните изменённую презентацию в файл PPTX.
Этот PHP‑код показывает, как создать обычную диаграмму:
# Создает экземпляр класса презентации, представляющего файл PPTX
$pres = new Presentation();
try {
# Получает первый слайд
$sld = $pres->getSlides()->get_Item(0);
# Добавляет диаграмму с данными по умолчанию
$chart = $sld->getShapes()->addChart(ChartType::ClusteredColumn, 0, 0, 500, 500);
# Устанавливает заголовок диаграммы
$chart->getChartTitle()->addTextFrameForOverriding("Sample Title");
$chart->getChartTitle()->getTextFrameForOverriding()->getTextFrameFormat()->setCenterText(NullableBool::True);
$chart->getChartTitle()->setHeight(20);
$chart->hasTitle();
# Устанавливает отображение значений для первой серии
$chart->getChartData()->getSeries()->get_Item(0)->getLabels()->getDefaultDataLabelFormat()->setShowValue(true);
# Устанавливает индекс листа данных диаграммы
$defaultWorksheetIndex = 0;
# Получает рабочий лист данных диаграммы
$fact = $chart->getChartData()->getChartDataWorkbook();
# Удаляет серии и категории, сгенерированные по умолчанию
$chart->getChartData()->getSeries()->clear();
$chart->getChartData()->getCategories()->clear();
$s = $chart->getChartData()->getSeries()->size();
$s = $chart->getChartData()->getCategories()->size();
# Добавляет новые серии
$chart->getChartData()->getSeries()->add($fact->getCell($defaultWorksheetIndex, 0, 1, "Series 1"), $chart->getType());
$chart->getChartData()->getSeries()->add($fact->getCell($defaultWorksheetIndex, 0, 2, "Series 2"), $chart->getType());
# Добавляет новые категории
$chart->getChartData()->getCategories()->add($fact->getCell($defaultWorksheetIndex, 1, 0, "Caetegoty 1"));
$chart->getChartData()->getCategories()->add($fact->getCell($defaultWorksheetIndex, 2, 0, "Caetegoty 2"));
$chart->getChartData()->getCategories()->add($fact->getCell($defaultWorksheetIndex, 3, 0, "Caetegoty 3"));
# Получает первую серию диаграммы
$series = $chart->getChartData()->getSeries()->get_Item(0);
# Заполняет данные серии
$series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 1, 1, 20));
$series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 2, 1, 50));
$series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 3, 1, 30));
# Устанавливает цвет заливки для серии
$series->getFormat()->getFill()->setFillType(FillType::Solid);
$series->getFormat()->getFill()->getSolidFillColor()->setColor(java("java.awt.Color")->RED);
# Получает вторую серию диаграммы
$series = $chart->getChartData()->getSeries()->get_Item(1);
# Заполняет данные серии
$series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 1, 2, 30));
$series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 2, 2, 10));
$series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 3, 2, 60));
# Устанавливает цвет заливки для серии
$series->getFormat()->getFill()->setFillType(FillType::Solid);
$series->getFormat()->getFill()->getSolidFillColor()->setColor(java("java.awt.Color")->GREEN);
# Создает пользовательские подписи для каждой категории новой серии
# Устанавливает первую подпись для отображения имени категории
$lbl = $series->getDataPoints()->get_Item(0)->getLabel();
$lbl->getDataLabelFormat()->setShowCategoryName(true);
$lbl = $series->getDataPoints()->get_Item(1)->getLabel();
$lbl->getDataLabelFormat()->setShowSeriesName(true);
# Отображает значение для третьей подписи
$lbl = $series->getDataPoints()->get_Item(2)->getLabel();
$lbl->getDataLabelFormat()->setShowValue(true);
$lbl->getDataLabelFormat()->setShowSeriesName(true);
$lbl->getDataLabelFormat()->setSeparator("/");
# Сохраняет презентацию с диаграммой
$pres->save("output.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Создание точечных диаграмм
Точечные диаграммы (также известные как точечные графики или графики x‑y) часто используют для проверки закономерностей или демонстрации корреляций между двумя переменными.
Вы можете использовать точечную диаграмму, когда
- у вас есть парные числовые данные
- две переменные хорошо коррелируют
- нужно определить, связаны ли две переменные
- есть независимая переменная с множеством значений зависимой переменной
Steps: Create Scattered Chart | Steps: Create PowerPoint Scattered Chart | Steps: Create PowerPoint Presentation Scattered Chart
- Пожалуйста, следуйте шагам из раздела Creating Normal Charts
- На третьем шаге добавьте диаграмму с данными и укажите тип диаграммы одним из следующих
- ChartType::ScatterWithMarkers - Represents Scatter Chart.
- ChartType::ScatterWithSmoothLinesAndMarkers - Represents Scatter Chart connected by curves, with data markers.
- ChartType::ScatterWithSmoothLines - Represents Scatter Chart connected by curves, without data markers.
- ChartType::ScatterWithStraightLinesAndMarkers - Represents Scatter Chart connected by lines, with data markers.
- ChartType::ScatterWithStraightLines - Represents Scatter Chart connected by lines, without data markers.
Этот PHP‑код показывает, как создать точечные диаграммы с разными маркерами:
# Создает экземпляр класса презентации, представляющего файл PPTX
$pres = new Presentation();
try {
# Получает первый слайд
$slide = $pres->getSlides()->get_Item(0);
# Создает диаграмму по умолчанию
$chart = $slide->getShapes()->addChart(ChartType::ScatterWithSmoothLines, 0, 0, 400, 400);
# Получает индекс листа данных диаграммы по умолчанию
$defaultWorksheetIndex = 0;
# Получает лист данных диаграммы
$fact = $chart->getChartData()->getChartDataWorkbook();
# Удаляет демонстрационную серию
$chart->getChartData()->getSeries()->clear();
# Добавляет новые серии
$chart->getChartData()->getSeries()->add($fact->getCell($defaultWorksheetIndex, 1, 1, "Series 1"), $chart->getType());
$chart->getChartData()->getSeries()->add($fact->getCell($defaultWorksheetIndex, 1, 3, "Series 2"), $chart->getType());
# Берёт первую серию диаграммы
$series = $chart->getChartData()->getSeries()->get_Item(0);
# Добавляет новую точку (1:3) в серию
$series->getDataPoints()->addDataPointForScatterSeries($fact->getCell($defaultWorksheetIndex, 2, 1, 1), $fact->getCell($defaultWorksheetIndex, 2, 2, 3));
# Добавляет новую точку (2:10)
$series->getDataPoints()->addDataPointForScatterSeries($fact->getCell($defaultWorksheetIndex, 3, 1, 2), $fact->getCell($defaultWorksheetIndex, 3, 2, 10));
# Изменяет тип серии
$series->setType(ChartType::ScatterWithStraightLinesAndMarkers);
# Изменяет маркер серии диаграммы
$series->getMarker()->setSize(10);
$series->getMarker()->setSymbol(MarkerStyleType::Star);
# Берёт вторую серию диаграммы
$series = $chart->getChartData()->getSeries()->get_Item(1);
# Добавляет новую точку (5:2) туда
$series->getDataPoints()->addDataPointForScatterSeries($fact->getCell($defaultWorksheetIndex, 2, 3, 5), $fact->getCell($defaultWorksheetIndex, 2, 4, 2));
# Добавляет новую точку (3:1)
$series->getDataPoints()->addDataPointForScatterSeries($fact->getCell($defaultWorksheetIndex, 3, 3, 3), $fact->getCell($defaultWorksheetIndex, 3, 4, 1));
# Добавляет новую точку (2:2)
$series->getDataPoints()->addDataPointForScatterSeries($fact->getCell($defaultWorksheetIndex, 4, 3, 2), $fact->getCell($defaultWorksheetIndex, 4, 4, 2));
# Добавляет новую точку (5:1)
$series->getDataPoints()->addDataPointForScatterSeries($fact->getCell($defaultWorksheetIndex, 5, 3, 5), $fact->getCell($defaultWorksheetIndex, 5, 4, 1));
# Изменяет маркер серии диаграммы
$series->getMarker()->setSize(10);
$series->getMarker()->setSymbol(MarkerStyleType::Circle);
$pres->save("AsposeChart_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Создание круговых диаграмм
Круговые диаграммы лучше всего использовать для отображения соотношения части к целому, особенно когда данные содержат категориальные подписи с числовыми значениями. Если в данных слишком много частей или меток, лучше использовать столбчатую диаграмму.
Steps: Create Pie Chart | Steps: Create PowerPoint Pie Chart | Steps: Create PowerPoint Presentation Pie Chart
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Добавьте диаграмму с данными по умолчанию и укажите тип (в данном случае ChartType.Pie).
- Получите доступ к листу данных диаграммы IChartDataWorkbook.
- Очистите серии и категории по умолчанию.
- Добавьте новые серии и категории.
- Добавьте новые данные для серии диаграммы.
- Добавьте новые точки и задайте пользовательские цвета секторов круговой диаграммы.
- Установите подписи для серий.
- Установите линии‑выноски для подписей серий.
- Установите угол вращения для слайдов с круговой диаграммой.
- Сохраните изменённую презентацию в файл PPTX.
Этот PHP‑код показывает, как создать круговую диаграмму:
# Создает экземпляр класса презентации, представляющего файл PPTX
$pres = new Presentation();
try {
# Получает первый слайд
$slides = $pres->getSlides()->get_Item(0);
# Добавляет диаграмму с данными по умолчанию
$chart = $slides->getShapes()->addChart(ChartType::Pie, 100, 100, 400, 400);
# Устанавливает заголовок диаграммы
$chart->getChartTitle()->addTextFrameForOverriding("Sample Title");
$chart->getChartTitle()->getTextFrameForOverriding()->getTextFrameFormat()->setCenterText(NullableBool::True);
$chart->getChartTitle()->setHeight(20);
$chart->setTitle(true);
# Устанавливает отображение значений в первой серии
$chart->getChartData()->getSeries()->get_Item(0)->getLabels()->getDefaultDataLabelFormat()->setShowValue(true);
# Устанавливает индекс листа данных диаграммы
$defaultWorksheetIndex = 0;
# Получает рабочий лист данных диаграммы
$fact = $chart->getChartData()->getChartDataWorkbook();
# Удаляет автоматически сгенерированные серии и категории
$chart->getChartData()->getSeries()->clear();
$chart->getChartData()->getCategories()->clear();
# Добавляет новые категории
$chart->getChartData()->getCategories()->add($fact->getCell(0, 1, 0, "First Qtr"));
$chart->getChartData()->getCategories()->add($fact->getCell(0, 2, 0, "2nd Qtr"));
$chart->getChartData()->getCategories()->add($fact->getCell(0, 3, 0, "3rd Qtr"));
# Добавляет новую серию
$series = $chart->getChartData()->getSeries()->add($fact->getCell(0, 0, 1, "Series 1"), $chart->getType());
# Заполняет данные серии
$series->getDataPoints()->addDataPointForPieSeries($fact->getCell($defaultWorksheetIndex, 1, 1, 20));
$series->getDataPoints()->addDataPointForPieSeries($fact->getCell($defaultWorksheetIndex, 2, 1, 50));
$series->getDataPoints()->addDataPointForPieSeries($fact->getCell($defaultWorksheetIndex, 3, 1, 30));
# Не работает в новой версии
# Добавление новых точек и установка цвета секторов
# series.IsColorVaried = true;
$chart->getChartData()->getSeriesGroups()->get_Item(0)->setColorVaried(true);
$point = $series->getDataPoints()->get_Item(0);
$point->getFormat()->getFill()->setFillType(FillType::Solid);
$point->getFormat()->getFill()->getSolidFillColor()->setColor(java("java.awt.Color")->CYAN);
# Устанавливает границу сектора
$point->getFormat()->getLine()->getFillFormat()->setFillType(FillType::Solid);
$point->getFormat()->getLine()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->GRAY);
$point->getFormat()->getLine()->setWidth(3.0);
$point->getFormat()->getLine()->setStyle(LineStyle->ThinThick);
$point->getFormat()->getLine()->setDashStyle(LineDashStyle->DashDot);
$point1 = $series->getDataPoints()->get_Item(1);
$point1->getFormat()->getFill()->setFillType(FillType::Solid);
$point1->getFormat()->getFill()->getSolidFillColor()->setColor(java("java.awt.Color")->ORANGE);
# Устанавливает границу сектора
$point1->getFormat()->getLine()->getFillFormat()->setFillType(FillType::Solid);
$point1->getFormat()->getLine()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLUE);
$point1->getFormat()->getLine()->setWidth(3.0);
$point1->getFormat()->getLine()->setStyle(LineStyle->Single);
$point1->getFormat()->getLine()->setDashStyle(LineDashStyle->LargeDashDot);
$point2 = $series->getDataPoints()->get_Item(2);
$point2->getFormat()->getFill()->setFillType(FillType::Solid);
$point2->getFormat()->getFill()->getSolidFillColor()->setColor(java("java.awt.Color")->YELLOW);
# Устанавливает границу сектора
$point2->getFormat()->getLine()->getFillFormat()->setFillType(FillType::Solid);
$point2->getFormat()->getLine()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->RED);
$point2->getFormat()->getLine()->setWidth(2.0);
$point2->getFormat()->getLine()->setStyle(LineStyle->ThinThin);
$point2->getFormat()->getLine()->setDashStyle(LineDashStyle->LargeDashDotDot);
# Создает пользовательские подписи для каждой категории новой серии
$lbl1 = $series->getDataPoints()->get_Item(0)->getLabel();
# lbl.ShowCategoryName = true;
$lbl1->getDataLabelFormat()->setShowValue(true);
$lbl2 = $series->getDataPoints()->get_Item(1)->getLabel();
$lbl2->getDataLabelFormat()->setShowValue(true);
$lbl2->getDataLabelFormat()->setShowLegendKey(true);
$lbl2->getDataLabelFormat()->setShowPercentage(true);
$lbl3 = $series->getDataPoints()->get_Item(2)->getLabel();
$lbl3->getDataLabelFormat()->setShowSeriesName(true);
$lbl3->getDataLabelFormat()->setShowPercentage(true);
# Отображает линии‑выноски для диаграммы
$series->getLabels()->getDefaultDataLabelFormat()->setShowLeaderLines(true);
# Устанавливает угол поворота секторов круговой диаграммы
$chart->getChartData()->getSeriesGroups()->get_Item(0)->setFirstSliceAngle(180);
# Сохраняет презентацию с диаграммой
$pres->save("PieChart_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Создание линейных диаграмм
Линейные диаграммы (также известные как линейные графики) лучше всего использовать, когда нужно показать изменение значений во времени. С помощью линейной диаграммы можно сравнивать множество данных одновременно, отслеживать изменения и тенденции, выделять аномалии в сериях и т.д.
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Добавьте диаграмму с данными по умолчанию и укажите тип (в данном случае
ChartType::Line). - Получите доступ к листу данных диаграммы IChartDataWorkbook.
- Очистите серии и категории по умолчанию.
- Добавьте новые серии и категории.
- Добавьте новые данные для серии диаграммы.
- Сохраните изменённую презентацию в файл PPTX.
Этот PHP‑код показывает, как создать линейную диаграмму:
$pres = new Presentation();
try {
$lineChart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Line, 10, 50, 600, 350);
$pres->save("lineChart.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
По умолчанию точки линейной диаграммы соединяются прямыми линиями. Если хотите соединять их пунктиром, укажите желаемый тип штриха так:
$lineChart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Line, 10, 50, 600, 350);
foreach($lineChart->getChartData()->getSeries() as $series) {
$series->getFormat()->getLine()->setDashStyle(LineDashStyle->Dash);
}
Создание диаграмм Tree Map
Диаграммы Tree Map лучше всего использовать для данных продаж, когда нужно показать относительный размер категорий и одновременно быстро выделить крупные вклады в каждой категории.
Steps: Create Tree Map Chart | Steps: Create PowerPoint Tree Map Chart | Steps: Create PowerPoint Presentation Tree Map Chart
- Создайте экземпляр класса Presentation .
- Получите ссылку на слайд по его индексу.
- Добавьте диаграмму с данными по умолчанию и укажите тип (в данном случае ChartType.TreeMap).
- Получите доступ к листу данных диаграммы IChartDataWorkbook.
- Очистите серии и категории по умолчанию.
- Добавьте новые серии и категории.
- Добавьте новые данные для серии диаграммы.
- Сохраните изменённую презентацию в файл PPTX.
Этот PHP‑код показывает, как создать диаграмму Tree Map:
$pres = new Presentation();
try {
$chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Treemap, 50, 50, 500, 400);
$chart->getChartData()->getCategories()->clear();
$chart->getChartData()->getSeries()->clear();
$wb = $chart->getChartData()->getChartDataWorkbook();
$wb->clear(0);
# ветка 1
$leaf = $chart->getChartData()->getCategories()->add($wb->getCell(0, "C1", "Leaf1"));
$leaf->getGroupingLevels()->setGroupingItem(1, "Stem1");
$leaf->getGroupingLevels()->setGroupingItem(2, "Branch1");
$chart->getChartData()->getCategories()->add($wb->getCell(0, "C2", "Leaf2"));
$leaf = $chart->getChartData()->getCategories()->add($wb->getCell(0, "C3", "Leaf3"));
$leaf->getGroupingLevels()->setGroupingItem(1, "Stem2");
$chart->getChartData()->getCategories()->add($wb->getCell(0, "C4", "Leaf4"));
# ветка 2
$leaf = $chart->getChartData()->getCategories()->add($wb->getCell(0, "C5", "Leaf5"));
$leaf->getGroupingLevels()->setGroupingItem(1, "Stem3");
$leaf->getGroupingLevels()->setGroupingItem(2, "Branch2");
$chart->getChartData()->getCategories()->add($wb->getCell(0, "C6", "Leaf6"));
$leaf = $chart->getChartData()->getCategories()->add($wb->getCell(0, "C7", "Leaf7"));
$leaf->getGroupingLevels()->setGroupingItem(1, "Stem4");
$chart->getChartData()->getCategories()->add($wb->getCell(0, "C8", "Leaf8"));
$series = $chart->getChartData()->getSeries()->add(ChartType::Treemap);
$series->getLabels()->getDefaultDataLabelFormat()->setShowCategoryName(true);
$series->getDataPoints()->addDataPointForTreemapSeries($wb->getCell(0, "D1", 4));
$series->getDataPoints()->addDataPointForTreemapSeries($wb->getCell(0, "D2", 5));
$series->getDataPoints()->addDataPointForTreemapSeries($wb->getCell(0, "D3", 3));
$series->getDataPoints()->addDataPointForTreemapSeries($wb->getCell(0, "D4", 6));
$series->getDataPoints()->addDataPointForTreemapSeries($wb->getCell(0, "D5", 9));
$series->getDataPoints()->addDataPointForTreemapSeries($wb->getCell(0, "D6", 9));
$series->getDataPoints()->addDataPointForTreemapSeries($wb->getCell(0, "D7", 4));
$series->getDataPoints()->addDataPointForTreemapSeries($wb->getCell(0, "D8", 3));
$series->setParentLabelLayout(ParentLabelLayoutType::Overlapping);
$pres->save("Treemap.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Создание диаграмм Stock
Steps: Create Stock Chart | Steps: Create PowerPoint Stock Chart | Steps: Create PowerPoint Presentation Stock Chart
- Создайте экземпляр класса Presentation .
- Получите ссылку на слайд по его индексу.
- Добавьте диаграмму с данными по умолчанию и укажите тип (ChartType.OpenHighLowClose).
- Получите доступ к листу данных диаграммы IChartDataWorkbook.
- Очистите серии и категории по умолчанию.
- Добавьте новые серии и категории.
- Добавьте новые данные для серии диаграммы.
- Укажите формат HiLowLines.
- Сохраните изменённую презентацию в файл PPTX.
Пример PHP‑кода для создания диаграммы Stock:
$pres = new Presentation();
try {
$chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::OpenHighLowClose, 50, 50, 600, 400, false);
$chart->getChartData()->getSeries()->clear();
$chart->getChartData()->getCategories()->clear();
$wb = $chart->getChartData()->getChartDataWorkbook();
$chart->getChartData()->getCategories()->add($wb->getCell(0, 1, 0, "A"));
$chart->getChartData()->getCategories()->add($wb->getCell(0, 2, 0, "B"));
$chart->getChartData()->getCategories()->add($wb->getCell(0, 3, 0, "C"));
$chart->getChartData()->getSeries()->add($wb->getCell(0, 0, 1, "Open"), $chart->getType());
$chart->getChartData()->getSeries()->add($wb->getCell(0, 0, 2, "High"), $chart->getType());
$chart->getChartData()->getSeries()->add($wb->getCell(0, 0, 3, "Low"), $chart->getType());
$chart->getChartData()->getSeries()->add($wb->getCell(0, 0, 4, "Close"), $chart->getType());
$series = $chart->getChartData()->getSeries()->get_Item(0);
$series->getDataPoints()->addDataPointForStockSeries($wb->getCell(0, 1, 1, 72));
$series->getDataPoints()->addDataPointForStockSeries($wb->getCell(0, 2, 1, 25));
$series->getDataPoints()->addDataPointForStockSeries($wb->getCell(0, 3, 1, 38));
$series = $chart->getChartData()->getSeries()->get_Item(1);
$series->getDataPoints()->addDataPointForStockSeries($wb->getCell(0, 1, 2, 172));
$series->getDataPoints()->addDataPointForStockSeries($wb->getCell(0, 2, 2, 57));
$series->getDataPoints()->addDataPointForStockSeries($wb->getCell(0, 3, 2, 57));
$series = $chart->getChartData()->getSeries()->get_Item(2);
$series->getDataPoints()->addDataPointForStockSeries($wb->getCell(0, 1, 3, 12));
$series->getDataPoints()->addDataPointForStockSeries($wb->getCell(0, 2, 3, 12));
$series->getDataPoints()->addDataPointForStockSeries($wb->getCell(0, 3, 3, 13));
$series = $chart->getChartData()->getSeries()->get_Item(3);
$series->getDataPoints()->addDataPointForStockSeries($wb->getCell(0, 1, 4, 25));
$series->getDataPoints()->addDataPointForStockSeries($wb->getCell(0, 2, 4, 38));
$series->getDataPoints()->addDataPointForStockSeries($wb->getCell(0, 3, 4, 50));
$chart->getChartData()->getSeriesGroups()->get_Item(0)->getUpDownBars()->setUpDownBars(true);
$chart->getChartData()->getSeriesGroups()->get_Item(0)->getHiLowLinesFormat()->getLine()->getFillFormat()->setFillType(FillType::Solid);
foreach($chart->getChartData()->getSeries() as $ser) {
$ser->getFormat()->getLine()->getFillFormat()->setFillType(FillType::NoFill);
}
$pres->save("output.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Создание диаграмм Box and Whisker
Steps: Create Box and Whisker Chart | Steps: Create PowerPoint Box and Whisker Chart | Steps: Create PowerPoint Presentation Box and Whisker Chart
- Создайте экземпляр класса Presentation .
- Получите ссылку на слайд по его индексу.
- Добавьте диаграмму с данными по умолчанию и укажите тип (ChartType.BoxAndWhisker).
- Получите доступ к листу данных диаграммы IChartDataWorkbook.
- Очистите серии и категории по умолчанию.
- Добавьте новые серии и категории.
- Добавьте новые данные для серии диаграммы.
- Сохраните изменённую презентацию в файл PPTX.
Этот PHP‑код показывает, как создать диаграмму Box and Whisker:
$pres = new Presentation();
try {
$chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::BoxAndWhisker, 50, 50, 500, 400);
$chart->getChartData()->getCategories()->clear();
$chart->getChartData()->getSeries()->clear();
$wb = $chart->getChartData()->getChartDataWorkbook();
$wb->clear(0);
$chart->getChartData()->getCategories()->add($wb->getCell(0, "A1", "Category 1"));
$chart->getChartData()->getCategories()->add($wb->getCell(0, "A2", "Category 1"));
$chart->getChartData()->getCategories()->add($wb->getCell(0, "A3", "Category 1"));
$chart->getChartData()->getCategories()->add($wb->getCell(0, "A4", "Category 1"));
$chart->getChartData()->getCategories()->add($wb->getCell(0, "A5", "Category 1"));
$chart->getChartData()->getCategories()->add($wb->getCell(0, "A6", "Category 1"));
$series = $chart->getChartData()->getSeries()->add(ChartType::BoxAndWhisker);
$series->setQuartileMethod(QuartileMethodType::Exclusive);
$series->setShowMeanLine(true);
$series->setShowMeanMarkers(true);
$series->setShowInnerPoints(true);
$series->setShowOutlierPoints(true);
$series->getDataPoints()->addDataPointForBoxAndWhiskerSeries($wb->getCell(0, "B1", 15));
$series->getDataPoints()->addDataPointForBoxAndWhiskerSeries($wb->getCell(0, "B2", 41));
$series->getDataPoints()->addDataPointForBoxAndWhiskerSeries($wb->getCell(0, "B3", 16));
$series->getDataPoints()->addDataPointForBoxAndWhiskerSeries($wb->getCell(0, "B4", 10));
$series->getDataPoints()->addDataPointForBoxAndWhiskerSeries($wb->getCell(0, "B5", 23));
$series->getDataPoints()->addDataPointForBoxAndWhiskerSeries($wb->getCell(0, "B6", 16));
$pres->save("BoxAndWhisker.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Создание диаграмм Funnel
Steps: Create Funnel Chart | Steps: Create PowerPoint Funnel Chart | Steps: Create PowerPoint Presentation Funnel Chart
- Создайте экземпляр класса Presentation .
- Получите ссылку на слайд по его индексу.
- Добавьте диаграмму с данными по умолчанию и укажите тип (ChartType.Funnel).
- Сохраните изменённую презентацию в файл PPTX.
PHP‑код, показывающий создание диаграммы Funnel:
$pres = new Presentation();
try {
$chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Funnel, 50, 50, 500, 400);
$chart->getChartData()->getCategories()->clear();
$chart->getChartData()->getSeries()->clear();
$wb = $chart->getChartData()->getChartDataWorkbook();
$wb->clear(0);
$chart->getChartData()->getCategories()->add($wb->getCell(0, "A1", "Category 1"));
$chart->getChartData()->getCategories()->add($wb->getCell(0, "A2", "Category 2"));
$chart->getChartData()->getCategories()->add($wb->getCell(0, "A3", "Category 3"));
$chart->getChartData()->getCategories()->add($wb->getCell(0, "A4", "Category 4"));
$chart->getChartData()->getCategories()->add($wb->getCell(0, "A5", "Category 5"));
$chart->getChartData()->getCategories()->add($wb->getCell(0, "A6", "Category 6"));
$series = $chart->getChartData()->getSeries()->add(ChartType::Funnel);
$series->getDataPoints()->addDataPointForFunnelSeries($wb->getCell(0, "B1", 50));
$series->getDataPoints()->addDataPointForFunnelSeries($wb->getCell(0, "B2", 100));
$series->getDataPoints()->addDataPointForFunnelSeries($wb->getCell(0, "B3", 200));
$series->getDataPoints()->addDataPointForFunnelSeries($wb->getCell(0, "B4", 300));
$series->getDataPoints()->addDataPointForFunnelSeries($wb->getCell(0, "B5", 400));
$series->getDataPoints()->addDataPointForFunnelSeries($wb->getCell(0, "B6", 500));
$pres->save("Funnel.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Создание диаграмм Sunburst
Steps: Create Sunburst Chart | Steps: Create PowerPoint Sunburst Chart | Steps: Create PowerPoint Presentation Sunburst Chart
- Создайте экземпляр класса Presentation .
- Получите ссылку на слайд по его индексу.
- Добавьте диаграмму с данными по умолчанию и укажите тип (в данном случае ChartType.sunburst).
- Сохраните изменённую презентацию в файл PPTX.
Этот PHP‑код показывает, как создать диаграмму Sunburst:
$pres = new Presentation();
try {
$chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Sunburst, 50, 50, 500, 400);
$chart->getChartData()->getCategories()->clear();
$chart->getChartData()->getSeries()->clear();
$wb = $chart->getChartData()->getChartDataWorkbook();
$wb->clear(0);
# ветка 1
$leaf = $chart->getChartData()->getCategories()->add($wb->getCell(0, "C1", "Leaf1"));
$leaf->getGroupingLevels()->setGroupingItem(1, "Stem1");
$leaf->getGroupingLevels()->setGroupingItem(2, "Branch1");
$chart->getChartData()->getCategories()->add($wb->getCell(0, "C2", "Leaf2"));
$leaf = $chart->getChartData()->getCategories()->add($wb->getCell(0, "C3", "Leaf3"));
$leaf->getGroupingLevels()->setGroupingItem(1, "Stem2");
$chart->getChartData()->getCategories()->add($wb->getCell(0, "C4", "Leaf4"));
# ветка 2
$leaf = $chart->getChartData()->getCategories()->add($wb->getCell(0, "C5", "Leaf5"));
$leaf->getGroupingLevels()->setGroupingItem(1, "Stem3");
$leaf->getGroupingLevels()->setGroupingItem(2, "Branch2");
$chart->getChartData()->getCategories()->add($wb->getCell(0, "C6", "Leaf6"));
$leaf = $chart->getChartData()->getCategories()->add($wb->getCell(0, "C7", "Leaf7"));
$leaf->getGroupingLevels()->setGroupingItem(1, "Stem4");
$chart->getChartData()->getCategories()->add($wb->getCell(0, "C8", "Leaf8"));
$series = $chart->getChartData()->getSeries()->add(ChartType::Sunburst);
$series->getLabels()->getDefaultDataLabelFormat()->setShowCategoryName(true);
$series->getDataPoints()->addDataPointForSunburstSeries($wb->getCell(0, "D1", 4));
$series->getDataPoints()->addDataPointForSunburstSeries($wb->getCell(0, "D2", 5));
$series->getDataPoints()->addDataPointForSunburstSeries($wb->getCell(0, "D3", 3));
$series->getDataPoints()->addDataPointForSunburstSeries($wb->getCell(0, "D4", 6));
$series->getDataPoints()->addDataPointForSunburstSeries($wb->getCell(0, "D5", 9));
$series->getDataPoints()->addDataPointForSunburstSeries($wb->getCell(0, "D6", 9));
$series->getDataPoints()->addDataPointForSunburstSeries($wb->getCell(0, "D7", 4));
$series->getDataPoints()->addDataPointForSunburstSeries($wb->getCell(0, "D8", 3));
$pres->save("Sunburst.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Создание диаграмм Histogram
Steps: Create Histogram Chart | Steps: Create PowerPoint Histogram Chart | Steps: Create PowerPoint Presentation Histogram Chart
- Создайте экземпляр класса Presentation .
- Получите ссылку на слайд по его индексу.
- Добавьте диаграмму с данными по умолчанию и укажите тип (ChartType.Histogram).
- Получите доступ к листу данных диаграммы IChartDataWorkbook.
- Очистите серии и категории по умолчанию.
- Добавьте новые серии и категории.
- Сохраните изменённую презентацию в файл PPTX.
Этот PHP‑код показывает, как создать гистограмму:
$pres = new Presentation();
$chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Histogram, 50, 50, 500, 400);
$chart->getChartData()->getCategories()->clear();
$chart->getChartData()->getSeries()->clear();
$wb = $chart->getChartData()->getChartDataWorkbook();
$wb->clear(0);
$series = $chart->getChartData()->getSeries()->add(ChartType::Histogram);
$series->getDataPoints()->addDataPointForHistogramSeries($wb->getCell(0, "A1", 15));
$series->getDataPoints()->addDataPointForHistogramSeries($wb->getCell(0, "A2", -41));
$series->getDataPoints()->addDataPointForHistogramSeries($wb->getCell(0, "A3", 16));
$series->getDataPoints()->addDataPointForHistogramSeries($wb->getCell(0, "A4", 10));
$series->getDataPoints()->addDataPointForHistogramSeries($wb->getCell(0, "A5", -23));
$series->getDataPoints()->addDataPointForHistogramSeries($wb->getCell(0, "A6", 16));
$chart->getAxes()->getHorizontalAxis()->setAggregationType(AxisAggregationType::Automatic);
Создание радарных диаграмм
Steps: Create Radar Chart | Steps: Create PowerPoint Radar Chart | Steps: Create PowerPoint Presentation Radar Chart
- Создайте экземпляр класса Presentation .
- Получите ссылку на слайд по его индексу.
- Добавьте диаграмму с данными и укажите тип
ChartType::Radar. - Сохраните изменённую презентацию в файл PPTX.
Этот PHP‑код показывает, как создать радарную диаграмму:
$pres = new Presentation();
try {
$pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Radar, 20, 20, 400, 300);
$pres->save("Radar-chart.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Создание мультикатегориальных диаграмм
Steps: Create Multi Category Chart | Steps: Create PowerPoint Multi Category Chart | Steps: Create PowerPoint Presentation Multi Category Chart
- Создайте экземпляр класса Presentation .
- Получите ссылку на слайд по его индексу.
- Добавьте диаграмму с данными по умолчанию и укажите тип (ChartType.ClusteredColumn).
- Получите доступ к листу данных диаграммы IChartDataWorkbook.
- Очистите серии и категории по умолчанию.
- Добавьте новые серии и категории.
- Добавьте новые данные для серии диаграммы.
- Сохраните изменённую презентацию в файл PPTX.
Этот PHP‑код показывает, как создать мультикатегориальную диаграмму:
$pres = new Presentation();
try {
$ch = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::ClusteredColumn, 100, 100, 600, 450);
$ch->getChartData()->getSeries()->clear();
$ch->getChartData()->getCategories()->clear();
$fact = $ch->getChartData()->getChartDataWorkbook();
$fact->clear(0);
$defaultWorksheetIndex = 0;
$category = $ch->getChartData()->getCategories()->add($fact->getCell(0, "c2", "A"));
$category->getGroupingLevels()->setGroupingItem(1, "Group1");
$category = $ch->getChartData()->getCategories()->add($fact->getCell(0, "c3", "B"));
$category = $ch->getChartData()->getCategories()->add($fact->getCell(0, "c4", "C"));
$category->getGroupingLevels()->setGroupingItem(1, "Group2");
$category = $ch->getChartData()->getCategories()->add($fact->getCell(0, "c5", "D"));
$category = $ch->getChartData()->getCategories()->add($fact->getCell(0, "c6", "E"));
$category->getGroupingLevels()->setGroupingItem(1, "Group3");
$category = $ch->getChartData()->getCategories()->add($fact->getCell(0, "c7", "F"));
$category = $ch->getChartData()->getCategories()->add($fact->getCell(0, "c8", "G"));
$category->getGroupingLevels()->setGroupingItem(1, "Group4");
$category = $ch->getChartData()->getCategories()->add($fact->getCell(0, "c9", "H"));
# Добавление серии
$series = $ch->getChartData()->getSeries()->add($fact->getCell(0, "D1", "Series 1"), ChartType::ClusteredColumn);
$series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, "D2", 10));
$series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, "D3", 20));
$series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, "D4", 30));
$series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, "D5", 40));
$series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, "D6", 50));
$series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, "D7", 60));
$series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, "D8", 70));
$series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, "D9", 80));
# Сохранить презентацию с диаграммой
$pres->save("AsposeChart_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Создание картографических диаграмм
Картографическая диаграмма визуализирует область, содержащую данные. Такие диаграммы лучше всего использовать для сравнения данных или значений по географическим регионам.
Steps: Create Map Chart | Steps: Create PowerPoint Map Chart | Steps: Create PowerPoint Presentation Map Chart
Этот PHP‑код показывает, как создать картографическую диаграмму:
$pres = new Presentation();
try {
$chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Map, 50, 50, 500, 400);
$pres->save("mapChart.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Создание комбинированных диаграмм
Комбинированная диаграмма (или combo‑диаграмма) объединяет два и более типов диаграмм в одном графике. Такая диаграмма позволяет выделять, сравнивать или исследовать различия между несколькими наборами данных, помогая выявлять взаимосвязи.

Следующий PHP‑код показывает, как создать комбинированную диаграмму, показанную выше, в презентации PowerPoint:
function createComboChart() {
$presentation = new Presentation();
$slide = $presentation->getSlides()->get_Item(0);
try {
$chart = createChartWithFirstSeries($slide);
addSecondSeriesToChart($chart);
addThirdSeriesToChart($chart);
setPrimaryAxesFormat($chart);
setSecondaryAxesFormat($chart);
$presentation->save("combo-chart.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
}
function createChartWithFirstSeries($slide) {
$chart = $slide->getShapes()->addChart(ChartType::ClusteredColumn, 50, 50, 600, 400);
// Установить заголовок диаграммы.
$chart->setTitle(true);
$chart->getChartTitle()->addTextFrameForOverriding("Chart Title");
$chart->getChartTitle()->setOverlay(false);
$titleParagraph = $chart->getChartTitle()->getTextFrameForOverriding()->getParagraphs()->get_Item(0);
$titleFormat = $titleParagraph->getParagraphFormat()->getDefaultPortionFormat();
$titleFormat->setFontBold(NullableBool::False);
$titleFormat->setFontHeight(18);
// Установить легенду диаграммы.
$chart->getLegend()->setPosition(LegendPositionType::Bottom);
$chart->getLegend()->getTextFormat()->getPortionFormat()->setFontHeight(12);
// Удалить автоматически сгенерированные серии и категории.
$chart->getChartData()->getSeries()->clear();
$chart->getChartData()->getCategories()->clear();
$worksheetIndex = 0;
$workbook = $chart->getChartData()->getChartDataWorkbook();
// Добавить новые категории.
$chart->getChartData()->getCategories()->add($workbook->getCell($worksheetIndex, 1, 0, "Category 1"));
$chart->getChartData()->getCategories()->add($workbook->getCell($worksheetIndex, 2, 0, "Category 2"));
$chart->getChartData()->getCategories()->add($workbook->getCell($worksheetIndex, 3, 0, "Category 3"));
$chart->getChartData()->getCategories()->add($workbook->getCell($worksheetIndex, 4, 0, "Category 4"));
// Добавить первую серию.
$seriesNameCell = $workbook->getCell($worksheetIndex, 0, 1, "Series 1");
$series = $chart->getChartData()->getSeries()->add($seriesNameCell, $chart->getType());
$series->getParentSeriesGroup()->setOverlap(-25);
$series->getParentSeriesGroup()->setGapWidth(220);
$series->getDataPoints()->addDataPointForBarSeries($workbook->getCell($worksheetIndex, 1, 1, 4.3));
$series->getDataPoints()->addDataPointForBarSeries($workbook->getCell($worksheetIndex, 2, 1, 2.5));
$series->getDataPoints()->addDataPointForBarSeries($workbook->getCell($worksheetIndex, 3, 1, 3.5));
$series->getDataPoints()->addDataPointForBarSeries($workbook->getCell($worksheetIndex, 4, 1, 4.5));
return $chart;
}
function addSecondSeriesToChart($chart) {
$workbook = $chart->getChartData()->getChartDataWorkbook();
$worksheetIndex = 0;
$seriesNameCell = $workbook->getCell($worksheetIndex, 0, 2, "Series 2");
$series = $chart->getChartData()->getSeries()->add($seriesNameCell, ChartType::ClusteredColumn);
$series->getParentSeriesGroup()->setOverlap(-25);
$series->getParentSeriesGroup()->setGapWidth(220);
$series->getDataPoints()->addDataPointForBarSeries($workbook->getCell($worksheetIndex, 1, 2, 2.4));
$series->getDataPoints()->addDataPointForBarSeries($workbook->getCell($worksheetIndex, 2, 2, 4.4));
$series->getDataPoints()->addDataPointForBarSeries($workbook->getCell($worksheetIndex, 3, 2, 1.8));
$series->getDataPoints()->addDataPointForBarSeries($workbook->getCell($worksheetIndex, 4, 2, 2.8));
}
function addThirdSeriesToChart($chart) {
$workbook = $chart->getChartData()->getChartDataWorkbook();
$worksheetIndex = 0;
$seriesNameCell = $workbook->getCell($worksheetIndex, 0, 3, "Series 3");
$series = $chart->getChartData()->getSeries()->add($seriesNameCell, ChartType::Line);
$series->getDataPoints()->addDataPointForLineSeries($workbook->getCell($worksheetIndex, 1, 3, 2.0));
$series->getDataPoints()->addDataPointForLineSeries($workbook->getCell($worksheetIndex, 2, 3, 2.0));
$series->getDataPoints()->addDataPointForLineSeries($workbook->getCell($worksheetIndex, 3, 3, 3.0));
$series->getDataPoints()->addDataPointForLineSeries($workbook->getCell($worksheetIndex, 4, 3, 5.0));
$series->setPlotOnSecondAxis(true);
}
function setPrimaryAxesFormat($chart) {
// Установить горизонтальную ось.
$horizontalAxis = $chart->getAxes()->getHorizontalAxis();
$horizontalAxis->getTextFormat()->getPortionFormat()->setFontHeight(12);
$horizontalAxis->getFormat()->getLine()->getFillFormat()->setFillType(FillType::NoFill);
setAxisTitle($horizontalAxis, "X Axis");
// Установить вертикальную ось.
$verticalAxis = $chart->getAxes()->getVerticalAxis();
$verticalAxis->getTextFormat()->getPortionFormat()->setFontHeight(12);
$verticalAxis->getFormat()->getLine()->getFillFormat()->setFillType(FillType::NoFill);
setAxisTitle($verticalAxis, "Y Axis 1");
// Установить цвет основных вертикальных линий сетки.
$majorGridLinesFormat = $verticalAxis->getMajorGridLinesFormat()->getLine()->getFillFormat();
$majorGridLinesFormat->setFillType(FillType::Solid);
$majorGridLinesFormat->getSolidFillColor()->setColor(new java("java.awt.Color", 217, 217, 217));
}
function setSecondaryAxesFormat($chart) {
// Установить вторичную горизонтальную ось.
$secondaryHorizontalAxis = $chart->getAxes()->getSecondaryHorizontalAxis();
$secondaryHorizontalAxis->setPosition(AxisPositionType::Bottom);
$secondaryHorizontalAxis->setCrossType(CrossesType::Maximum);
$secondaryHorizontalAxis->setVisible(false);
$secondaryHorizontalAxis->getMajorGridLinesFormat()->getLine()->getFillFormat()->setFillType(FillType::NoFill);
$secondaryHorizontalAxis->getMinorGridLinesFormat()->getLine()->getFillFormat()->setFillType(FillType::NoFill);
// Установить вторичную вертикальную ось.
$secondaryVerticalAxis = $chart->getAxes()->getSecondaryVerticalAxis();
$secondaryVerticalAxis->setPosition(AxisPositionType::Right);
$secondaryVerticalAxis->getTextFormat()->getPortionFormat()->setFontHeight(12);
$secondaryVerticalAxis->getFormat()->getLine()->getFillFormat()->setFillType(FillType::NoFill);
$secondaryVerticalAxis->getMajorGridLinesFormat()->getLine()->getFillFormat()->setFillType(FillType::NoFill);
$secondaryVerticalAxis->getMinorGridLinesFormat()->getLine()->getFillFormat()->setFillType(FillType::NoFill);
setAxisTitle($secondaryVerticalAxis, "Y Axis 2");
}
function setAxisTitle($axis, $axisTitle) {
$axis->setTitle(true);
$axis->getTitle()->setOverlay(false);
$titleParagraph = $axis->getTitle()->addTextFrameForOverriding($axisTitle)->getParagraphs()->get_Item(0);
$titleFormat = $titleParagraph->getParagraphFormat()->getDefaultPortionFormat();
$titleFormat->setFontBold(NullableBool::False);
$titleFormat->setFontHeight(12);
}
Обновление диаграмм
Steps: Update PowerPoint Chart | Steps: Update Presentation Chart | Steps: Update PowerPoint Presentation Chart
- Создайте экземпляр класса Presentation, представляющего презентацию, содержащую диаграмму, которую необходимо обновить.
- Получите ссылку на слайд, используя его индекс.
- Пройдите по всем фигурам, чтобы найти нужную диаграмму.
- Получите доступ к листу данных диаграммы.
- Измените данные серии, заменив значения серии.
- Добавьте новую серию и заполните её данными.
- Сохраните изменённую презентацию в файл PPTX.
Этот PHP‑код показывает, как обновить диаграмму:
$pres = new Presentation();
try {
# Доступ к первому slideMarker
$sld = $pres->getSlides()->get_Item(0);
# Получить диаграмму с данными по умолчанию
$chart = $sld->getShapes()->get_Item(0);
# Установка индекса листа данных диаграммы
$defaultWorksheetIndex = 0;
# Получение листа данных диаграммы
$fact = $chart->getChartData()->getChartDataWorkbook();
# Изменение названия категории диаграммы
$fact->getCell($defaultWorksheetIndex, 1, 0, "Modified Category 1");
$fact->getCell($defaultWorksheetIndex, 2, 0, "Modified Category 2");
# Взять первую серию диаграммы
$series = $chart->getChartData()->getSeries()->get_Item(0);
# Сейчас обновляем данные серии
$fact->getCell($defaultWorksheetIndex, 0, 1, "New_Series1");// Изменение названия серии
$series->getDataPoints()->get_Item(0)->getValue()->setData(90);
$series->getDataPoints()->get_Item(1)->getValue()->setData(123);
$series->getDataPoints()->get_Item(2)->getValue()->setData(44);
# Взять вторую серию диаграммы
$series = $chart->getChartData()->getSeries()->get_Item(1);
# Сейчас обновляем данные серии
$fact->getCell($defaultWorksheetIndex, 0, 2, "New_Series2");// Изменение названия серии
$series->getDataPoints()->get_Item(0)->getValue()->setData(23);
$series->getDataPoints()->get_Item(1)->getValue()->setData(67);
$series->getDataPoints()->get_Item(2)->getValue()->setData(99);
# Сейчас, добавляем новую серию
$chart->getChartData()->getSeries()->add($fact->getCell($defaultWorksheetIndex, 0, 3, "Series 3"), $chart->getType());
# Взять третью серию диаграммы
$series = $chart->getChartData()->getSeries()->get_Item(2);
# Сейчас заполняем данные серии
$series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 1, 3, 20));
$series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 2, 3, 50));
$series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 3, 3, 30));
$chart->setType(ChartType::ClusteredCylinder);
# Сохранить презентацию с диаграммой
$pres->save("AsposeChartModified_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Установка диапазона данных для диаграмм
Чтобы установить диапазон данных для диаграммы, выполните следующее:
- Создайте экземпляр класса Presentation, представляющего презентацию, содержащую диаграмму.
- Получите ссылку на слайд по его индексу.
- Пройдите по всем фигурам, чтобы найти нужную диаграмму.
- Получите доступ к данным диаграммы и укажите диапазон.
- Сохраните изменённую презентацию в файл PPTX.
Этот PHP‑код показывает, как установить диапазон данных для диаграммы:
$pres = new Presentation();
try {
$slide = $pres->getSlides()->get_Item(0);
$chart = $slide->getShapes()->get_Item(0);
$chart->getChartData()->setRange("Sheet1!A1:B4");
$pres->save("SetDataRange_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Использование маркеров по умолчанию в диаграммах
При использовании маркеров по умолчанию в диаграммах каждая серия получает автоматически разные символы маркеров.
Этот PHP‑код показывает, как автоматически установить маркер серии диаграммы:
$pres = new Presentation();
try {
$slide = $pres->getSlides()->get_Item(0);
$chart = $slide->getShapes()->addChart(ChartType::LineWithMarkers, 10, 10, 400, 400);
$chart->getChartData()->getSeries()->clear();
$chart->getChartData()->getCategories()->clear();
$fact = $chart->getChartData()->getChartDataWorkbook();
$chart->getChartData()->getSeries()->add($fact->getCell(0, 0, 1, "Series 1"), $chart->getType());
$series = $chart->getChartData()->getSeries()->get_Item(0);
$chart->getChartData()->getCategories()->add($fact->getCell(0, 1, 0, "C1"));
$series->getDataPoints()->addDataPointForLineSeries($fact->getCell(0, 1, 1, 24));
$chart->getChartData()->getCategories()->add($fact->getCell(0, 2, 0, "C2"));
$series->getDataPoints()->addDataPointForLineSeries($fact->getCell(0, 2, 1, 23));
$chart->getChartData()->getCategories()->add($fact->getCell(0, 3, 0, "C3"));
$series->getDataPoints()->addDataPointForLineSeries($fact->getCell(0, 3, 1, -10));
$chart->getChartData()->getCategories()->add($fact->getCell(0, 4, 0, "C4"));
$series->getDataPoints()->addDataPointForLineSeries($fact->getCell(0, 4, 1, null));
$chart->getChartData()->getSeries()->add($fact->getCell(0, 0, 2, "Series 2"), $chart->getType());
# Взять вторую серию диаграммы
$series2 = $chart->getChartData()->getSeries()->get_Item(1);
# Сейчас заполняем данные серии
$series2->getDataPoints()->addDataPointForLineSeries($fact->getCell(0, 1, 2, 30));
$series2->getDataPoints()->addDataPointForLineSeries($fact->getCell(0, 2, 2, 10));
$series2->getDataPoints()->addDataPointForLineSeries($fact->getCell(0, 3, 2, 60));
$series2->getDataPoints()->addDataPointForLineSeries($fact->getCell(0, 4, 2, 40));
$chart->setLegend(true);
$chart->getLegend()->setOverlay(false);
$pres->save("DefaultMarkersInChart.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}