首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >phppowerpoint饼图分解

phppowerpoint饼图分解
EN

Stack Overflow用户
提问于 2014-08-31 14:17:25
回答 1查看 389关注 0票数 0

我有一个项目,其中的数据显示在饼图。它可以将饼图从php导出到powerpoint。但是饼状图是通过爆炸的方式显示的。我想在不爆炸的情况下展示它。有可能吗?

我正在使用PowerPoint2007。代码如下-

代码语言:javascript
复制
  <?php
require_once 'iconnect.php';
require_once 'QueryHandler.php';
require_once 'ResultTypes.php';

include_once 'Sample_Header.php';

use PhpOffice\PhpPowerpoint\PhpPowerpoint;
use PhpOffice\PhpPowerpoint\Shape\Chart\Type\Pie3D;
use PhpOffice\PhpPowerpoint\Style\Fill;
use PhpOffice\PhpPowerpoint\Style\Color;
use PhpOffice\PhpPowerpoint\Style\Shadow;
use PhpOffice\PhpPowerpoint\Shape\Chart\Series;
use PhpOffice\PhpPowerpoint\Style\Border;
use PhpOffice\PhpPowerpoint\Style\Alignment;
use PhpOffice\PhpPowerpoint\IOFactory;

Connect(3);

global $linkid;
$queryHandler=new QueryHandler();

$query="SELECT sku,value ".
    "FROM ferrero_booker t1,booker_sku t2 ".
    "WHERE t1.skuID=t2.skuID ".
    "LIMIT 10";


$result = $queryHandler->runQuery($query,$linkid,ResultTypes::$TYPE_ARRAY);

$data=array();
for($i=0;$i<count($result);$i++)
{
    $id=$result[$i][0];
    $data[$id]=(float)$result[$i][1];
}

$objPHPPowerPoint = new PhpPowerpoint();

$objPHPPowerPoint->getProperties()->setCreator('PHPOffice')
                              ->setLastModifiedBy('PHPPowerPoint Team')
                              ->setTitle('Sample 07 Title')
                              ->setSubject('Sample 07 Subject')
                              ->setDescription('Sample 07 Description')
                              ->setKeywords('office 2007 openxml libreoffice odt php')
                              ->setCategory('Sample Category');


$objPHPPowerPoint->removeSlideByIndex(0);


$currentSlide = createTemplatedSlide($objPHPPowerPoint);

$pie3DChart = new Pie3D();
$series = new Series('', $data);
$series->setShowSeriesName(true);
$series->getDataPointFill(0)->setFillType(Fill::FILL_SOLID)->setStartColor(new Color('FF4672A8'));
$series->getDataPointFill(1)->setFillType(Fill::FILL_SOLID)->setStartColor(new Color('FFAB4744'));
$series->getDataPointFill(2)->setFillType(Fill::FILL_SOLID)->setStartColor(new Color('FF8AA64F'));
$series->getDataPointFill(3)->setFillType(Fill::FILL_SOLID)->setStartColor(new Color('FF725990'));
$series->getDataPointFill(4)->setFillType(Fill::FILL_SOLID)->setStartColor(new Color('FF4299B0'));
$series->getDataPointFill(5)->setFillType(Fill::FILL_SOLID)->setStartColor(new Color('FFDC853E'));
$series->getDataPointFill(6)->setFillType(Fill::FILL_SOLID)->setStartColor(new Color('FF93A9CE'));
$pie3DChart->addSeries($series);


$shape = $currentSlide->createChartShape();
$shape->setName('PHPPowerPoint Daily Downloads')
      ->setResizeProportional(false)
      ->setHeight(550)
      ->setWidth(700)
      ->setOffsetX(120)
      ->setOffsetY(80);
$shape->getBorder()->setLineStyle(Border::LINE_SINGLE);
$shape->getTitle()->setText('Booker Sales');
$shape->getTitle()->getFont()->setItalic(true);
$shape->getPlotArea()->setType($pie3DChart);
$shape->getView3D()->setRotationX(90);
$shape->getView3D()->setPerspective(90);
$shape->getLegend()->getBorder()->setLineStyle(Border::LINE_SINGLE);
$shape->getLegend()->getFont()->setItalic(true);


$oWriterPPTX = IOFactory::createWriter($objPHPPowerPoint, 'PowerPoint2007');
$oWriterPPTX->save("sample.pptx");

print_r($data);

?>

EN

回答 1

Stack Overflow用户

发布于 2014-09-24 23:50:09

我还没有在代码中看到这样做的方法,但是可以很容易地修改源代码。你是否应该这样做是另一回事,但我不会在这里触及这个话题。

饼图展开由写入xml的“爆发”标记控制,这种情况发生在编写器中。特别是这个文件(在我的安装/版本上):

代码语言:javascript
复制
PHPPowerPoint/src/PhpPowerpoint/Writer/PowerPoint2007/Chart.php

在该文件中,以下行添加了展开效果:

代码语言:javascript
复制
        // c:explosion
        $objWriter->startElement('c:explosion');
        $objWriter->writeAttribute('val', '20');
        $objWriter->endElement();

因此,您可以通过取消上面的行来删除分解。如果你只是想要这个属性无条件的消失,注释掉上面的几行,或者删除它们。如果您想要扩展API,那么将相关的方法添加到Pie chart类中并检查此处的值,根据这些设置有条件地执行上面的代码行。

我希望这能帮到你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25589437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档