加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHPPowerpoint:网格线自定义图表线颜色标签Y轴

发布时间:2020-12-13 22:48:43 所属栏目:PHP教程 来源:网络整理
导读:我正在使用以下代码创建一个包含 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
我正在使用以下代码创建一个包含 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轴(目前它是空白的)

截图

解决方法

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

tl; dr – No(在我的测试中),不,不.

长版

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

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

生成的XML(解压缩生成的.pptx文件后的chart / 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>

我通过添加以下行来设置Axis标签:

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

在你的脚本中的这一行之后:

$shape->getPlotArea()->setType($lineChart);

>网格线和线条颜色似乎是可能的,但当前类中没有方法来支持它们.

可用的最后一个Powerpoint编写器类是针对2007年的,它们已经过时了.可能需要更新XML结构并添加一些其他功能.我将看一下有关OOXML格式的一些文档,看看在不从头开始重写writer类的情况下添加它们是多么容易.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读