【问题标题】:PHPPowerpoint : Grid Lines + Custom Chart Line Colors + Label Y-axisPHPPowerpoint:网格线+自定义图表线颜色+标签Y轴
【发布时间】:2013-05-25 11:25:27
【问题描述】:

我正在使用以下代码使用PHP Powerpoint 库创建图表。

$currentSlide = createTemplatedSlide($objPHPPowerPoint);
$seriesData = array('ABC'=>97,'BCD'=>97,'CDE'=>97,'DEF'=>97,'EFG'=>97,'FGH'=>97);
$lineChart = new PHPPowerPoint_Shape_Chart_Type_Line();
$series = new PHPPowerPoint_Shape_Chart_Series('Benchmark', $seriesData);
$series->setShowSeriesName(false);
$lineChart->addSeries($series);

$shape = $currentSlide->createChartShape();
$shape->setName('Benchmark')
      ->setResizeProportional(false)
      ->setHeight(480)
      ->setWidth(940)
      ->setOffsetX(10)
      ->setOffsetY(100);
$shape->getShadow()->setVisible(false)
$shape->getFill()->setFillType(PHPPowerPoint_Style_Fill::FILL_GRADIENT_LINEAR)
             ->setStartColor(new PHPPowerPoint_Style_Color('ddd9c3'))
             ->setEndColor(new PHPPowerPoint_Style_Color('ddd9c3'))
             ->setRotation(270);
$shape->getBorder()->setLineStyle(PHPPowerPoint_Style_Border::LINE_SINGLE);
$shape->getTitle()->setText('');
$shape->getTitle()->getFont()->setItalic(true);
$shape->getPlotArea()->setType($lineChart);
$shape->getView3D()->setRotationX(30);
$shape->getView3D()->setPerspective(30);

图表按预期出现(附截图),但我想自定义 3 件事:

  • 向图表添加网格线(可能吗?)
  • 指定图表线条颜色而不是使用默认颜色。那里 将是单个图表中的多条图表线。所以我需要为每一行指定一个自定义颜色。
  • 标记 Y 轴(目前为空白)

截图

【问题讨论】:

    标签: php phppowerpoint


    【解决方案1】:

    我在网上找到了这个库的 2 个版本。一个在github,另一个在codeplex。 Github 上的那个肯定看起来更新,但缺少任何类型的文档。 Codeplex 已过时,但实际上有代码示例。

    tl;dr - 不(无论如何在我的测试中),不,不。

    加长版

    通过浏览代码并查看它创建的 XML,我注意到了一些事情:

    1. 在 Powerpoint 2013 中,Y 轴(值轴)不会显示在生成的文件中,但在我打开文件后保存文件会导致 Y 轴出现。我在 XML 中看到了轴标签,但有些东西阻止它显示。

    生成的XML(解压生成的.pptx文件后的charts/chart1.xml):

                <c:valAx>
                    <c:axId val="52749440"/>
                    <c:scaling>
                        <c:orientation val="minMax"/>
                    </c:scaling>
                    <c:axPos val="l"/>
                    <c:numFmt formatCode="" sourceLinked="0"/>
                    <c:majorTickMark val="none"/>
                    <c:tickLblPos val="nextTo"/>
                    <c:txPr>
                        <a:bodyPr/>
                        <a:lstStyle/>
                        <a:p>
                            <a:pPr>
                                <a:defRPr/>
                            </a:pPr>
                            <a:r>
                                <a:rPr lang="en-US" dirty="0"/>
                                <a:t>Y Axis!</a:t>
                            </a:r>
                            <a:endParaRPr lang="en-US" dirty="0"/>
                        </a:p>
                    </c:txPr>
                    <c:crossAx val="52743552"/>
                    <c:crosses val="autoZero"/>
                    <c:crossBetween val="between"/>
                </c:valAx>
    

    我通过添加这些行来设置轴标签:

    $shape->getPlotArea()->getAxisX()->setTitle('X Axis!');
    $shape->getPlotArea()->getAxisY()->setTitle('Y Axis!');
    

    在脚本中的这一行之后:

    $shape->getPlotArea()->setType($lineChart);
    
    1. 网格线和线条颜色似乎是可能的,但当前类中没有支持它们的方法。

    最后一个可用的 Powerpoint writer 课程是 2007 年的,这已经有点过时了。 XML 结构可能需要更新并添加一些附加功能。我将看一些关于 OOXML 格式的文档,看看添加这些文档是多么容易,而无需从头开始重写编写器类。

    【讨论】:

    • 折线图可以改变X轴和Y轴的标签颜色吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-20
    • 1970-01-01
    • 2019-02-08
    • 2017-07-23
    相关资源
    最近更新 更多