【问题标题】:PhpOffice/PhpWord Charts - Cant show Axis, Grids, LabelsPhpOffice/PhpWord 图表 - 无法显示轴、网格、标签
【发布时间】:2016-03-29 22:27:53
【问题描述】:

我正在使用来自 PhpOffice/PhpWord 的 Sample_32_Chart.php...

它正在工作,但我希望我的图表能在它们上显示轴、系列、标签、标题等。

尝试查看文档 http://phpoffice.github.io/PHPWord/docs/master/classes/PhpOffice.PhpWord.Element.Chart.html

但是没有什么能满足我的需求。

任何帮助都会很棒。

一些代码

<?php
include_once 'Sample_Header.php';

use PhpOffice\PhpWord\Shared\Converter;

// New Word document
echo date('H:i:s'), ' Create new PhpWord object', EOL;

$phpWord = new \PhpOffice\PhpWord\PhpWord();
$phpWord->addTitleStyle(1, array('size' => 14, 'bold' => true), array('keepNext' => true, 'spaceBefore' => 240));
$phpWord->addTitleStyle(2, array('size' => 14, 'bold' => true), array('keepNext' => true, 'spaceBefore' => 240));

// 2D charts
$section = $phpWord->addSection();
$section->addTitle(htmlspecialchars('2D charts', ENT_COMPAT, 'UTF-8'), 1);
$section = $phpWord->addSection(array('colsNum' => 2, 'breakType' => 'continuous'));

$chartTypes = array('pie', 'doughnut', 'bar', 'column', 'line', 'area', 'scatter', 'radar');
$twoSeries = array('bar', 'column', 'line', 'area', 'scatter', 'radar');
$threeSeries = array('bar', 'line');
$categories = array('A', 'B', 'C', 'D', 'E');
$series1 = array(1, 3, 2, 5, 4);
$series2 = array(3, 1, 7, 2, 6);
$series3 = array(8, 3, 2, 5, 4);

foreach ($chartTypes as $chartType) {
    $section->addTitle(ucfirst($chartType), 2);
    $chart = $section->addChart($chartType, $categories, $series1);
    $chart->getStyle()->setWidth(Converter::inchToEmu(2.5))->setHeight(Converter::inchToEmu(2));

    if (in_array($chartType, $twoSeries)) {
        $chart->addSeries($categories, $series2);
    }
    if (in_array($chartType, $threeSeries)) {
        $chart->addSeries($categories, $series3);
    }
    $section->addTextBreak();
}

// 3D charts
$section = $phpWord->addSection(array('breakType' => 'continuous'));
$section->addTitle(htmlspecialchars('3D charts', ENT_COMPAT, 'UTF-8'), 1);
$section = $phpWord->addSection(array('colsNum' => 2, 'breakType' => 'continuous'));

$chartTypes = array('pie', 'bar', 'column', 'line', 'area');
$multiSeries = array('bar', 'column', 'line', 'area');
$style = array('width' => Converter::cmToEmu(5), 'height' => Converter::cmToEmu(4), '3d' => true);
foreach ($chartTypes as $chartType) {
    $section->addTitle(ucfirst($chartType), 2);
    $chart = $section->addChart($chartType, $categories, $series1, $style);
    if (in_array($chartType, $multiSeries)) {
        $chart->addSeries($categories, $series2);
        $chart->addSeries($categories, $series3);
    }
    $section->addTextBreak();
}

// Save file
echo write($phpWord, basename(__FILE__, '.php'), $writers);
if (!CLI) {
    include_once 'Sample_Footer.php';
}

哪个是 Sample_32_Chart.php,在这个链接中我发现有人在谈论这个功能已经开始添加,但不知道如何使用它们。

https://github.com/PHPOffice/PHPWord/pull/576

提前致谢!

【问题讨论】:

  • Alberto,你有没有想过如何在 PHPWord 中为图表添加轴、系列、标签、标题等?
  • 不幸的是,没有@PHPDave。我改为使用 PHPExcel。有一些漂亮的图表。
  • 太棒了,我得研究一下。然后您是否从 PHPExcel 导出图表并将其导入 PHPWord?我正在考虑只移植 xml 并手动添加数据系列

标签: php phpword


【解决方案1】:

我在这方面做了一些工作,并提出了一些修改,可以通过原始 xml 图形设置并让 PHPWord 输出它。 https://github.com/PHPOffice/PHPWord/issues/957 - 请参阅我对该线程的第二条评论

【讨论】:

    猜你喜欢
    • 2014-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-27
    • 2017-03-08
    • 1970-01-01
    • 2019-03-20
    • 1970-01-01
    相关资源
    最近更新 更多