6

我正在尝试使用这个通过 PHP 创建 PowerPoint 演示文稿。当我尝试在 PowerPoint 中创建图表对象时,我无法在下载文件并在 Microsoft Office 中打开它们时编辑图表。

是否有任何库可以在 PowerPoint 文件中构建图表并允许通过 Office PowerPoint 对其进行编辑?

使用上述库创建的示例图表

4

4 回答 4

6

这很可能是 PHP Power Point 的一个错误。

但是,最新版本的PHPExcel支持 Charting 并得到积极维护。它允许您在 Excel 中绘制和导出数据,这些数据可以轻松复制到 PowerPoint。

不过,就个人而言,我建议您使用Google Chart ToolsRaphaelJS

示例图表

如果您希望能够在 PowerPoint 中使用图表,您可以轻松地将Google 图表数据导出到 Excel (CSV)。另请参阅此示例

如果您专门介绍 Google Analytics,您应该阅读本文档,了解如何在 Google Analytics 的 PowerPoint 中创建准确的自动更新图表和数据。它基本上使用用于 PowerPoint的oomfo 插件。

或者,有像ShufflePoint这样的付费解决方案。

于 2012-07-29T12:42:15.333 回答
3

当然,您可以使用 PHPPowerPoint 导出可编辑图表。在测试中有两个例子。第一个示例不包括 Excel 工作表,这就是图表不可编辑的原因。但是,如果您查看我认为 test8 的第二个示例,那么您将看到对 PHPExcel 的引用调用和一个包含数据表和图表的标志,然后您可以编辑数据。

于 2012-12-22T08:54:59.547 回答
2

看到这个网址: -

PHP PowerPoint 2007 课程

为 PHP 编程语言提供一组类的项目,允许您写入和读取不同的文件格式,如 PowerPoint 2007,... 这个项目是围绕 Microsoft 的 OpenXML 标准和 PHP 构建的。

http://phppowerpoint.codeplex.com/

http://phppowerpoint.codeplex.com/sourcecontrol/list/changesets?ProjectName=phppowerpoint

特征

http://phppowerpoint.codeplex.com/wikipage?title=Features&referringTitle=Home

尝试这个:-

<?php
/** Error reporting */
error_reporting(E_ALL);

/** Include path **/
set_include_path(get_include_path() . PATH_SEPARATOR . '/Classes/');

/** PHPPowerPoint */
include 'Classes/PHPPowerPoint.php';

// Create new PHPPowerPoint object
$objPHPPowerPoint = new PHPPowerPoint();
$objPHPPowerPoint->getProperties()->setCreator("Maarten Balliauw")->
    setLastModifiedBy("Maarten Balliauw")->setTitle("Office 2007 PPTX Test Document")->
    setSubject("Office 2007 PPTX Test Document")->setDescription("Test document for Office 2007 PPTX, generated using PHP classes.")->
    setKeywords("office 2007 openxml php")->setCategory("Test result file");

// Remove first slide
$objPHPPowerPoint->removeSlideByIndex(0);

// Create templated slide

// Create templated slide
$currentSlide = createTemplatedSlide($objPHPPowerPoint);

// Generate sample data for line chart
$seriesData = array('Jul 17' => 15, 'Jul 18' => 27, 'Jul 19' => 17, 'Jul 20' =>
    11, 'Jul 21' => 7, 'Jul 22' => 2, 'Jul 23' => 8);

// Create a line chart (that should be inserted in a shape)
$lineChart = new PHPPowerPoint_Shape_Chart_Type_Scatter();
$series = new PHPPowerPoint_Shape_Chart_Series('Visits', $seriesData);
//$series->setShowSeriesName(true);
$lineChart->addSeries($series);

// Create a shape (chart)
$shape = $currentSlide->createChartShape();
$shape->setName('# of people visiting your website')->setResizeProportional(false)->setHeight(550)->
    setWidth(700)->setOffsetX(120)->setOffsetY(80);
$shape->getShadow()->setVisible(true)->setDirection(45)->setDistance(10);
$shape->getFill()->setFillType(PHPPowerPoint_Style_Fill::FILL_GRADIENT_LINEAR)->
    setStartColor(new PHPPowerPoint_Style_Color('FFCCCCCC'))->setEndColor(new
    PHPPowerPoint_Style_Color('FFFFFFFF'))->setRotation(270);
$shape->getBorder()->setLineStyle(PHPPowerPoint_Style_Border::LINE_SINGLE);
$shape->getTitle()->setText('# of people visiting your website');
$shape->getTitle()->getFont()->setItalic(true);
$shape->getPlotArea()->setType($lineChart);
$shape->getView3D()->setRotationX(30);
$shape->getView3D()->setPerspective(30);
$shape->getLegend()->getBorder()->setLineStyle(PHPPowerPoint_Style_Border::
    LINE_SINGLE);
$shape->getLegend()->getFont()->setItalic(true);

// Save PowerPoint 2007 file
$objWriter = PHPPowerPoint_IOFactory::createWriter($objPHPPowerPoint,
    'PowerPoint2007');
$objWriter->save(str_replace('.php', '.pptx', __file__));

function createTemplatedSlide(PHPPowerPoint $objPHPPowerPoint) {
    // Create slide
    $slide = $objPHPPowerPoint->createSlide();

    // Return slide
    return $slide;
}
于 2012-08-01T09:58:34.040 回答
0

正确的示例现在称为:

Sample_05_Chart_with_PHPExcel.php

在主 PHPPowerpoint 内的示例文件夹中(现在他们开始将其称为 PHPPresentation)文件夹

请注意,要使其正常工作,您必须更改/添加一些内容。

  1. 从 GitHub 下载并将CommonPHPOffice的文件夹保存在某处

  2. 包括并注册自动加载器Common

  3. 从 GitHub 下载并将PHPExcel文件夹保存在某处

  4. 包括主PHPExcel.php文件

  5. Sample_Header.php文件中我更改了行

    Autoloader::register();

    PhpOffice\PhpPresentation\Autoloader::register();

    避免冲突(我们注册的是什么 Autoloader?)

  6. Sample_Header.php文件中,我还删除(注释)了以下行:

    //require_once __DIR__ . '/../vendor/autoload.php';

    这给了我错误(我没有使用作曲家,也不想要作曲家)。

就是这样,现在它创建了一个 Powerpoint 演示文稿,其中包含可编辑的 Excel 数据。

这是修改后的 Sample_Header.php 中的最终代码(第 26-28 行):

PhpOffice\PhpPresentation\Autoloader::register();

//require_once __DIR__ . '/../vendor/autoload.php';

这是在修改后的 Sample_05_Chart_with_PHPExcel.php 中添加的最终代码(第 5 行,之后include_once 'Sample_Header.php';):

require_once '<path to phpExcel...>/Classes/PHPExcel.php';
include '<path to Common...>/Common/Autoloader.php';
PhpOffice\Common\Autoloader::register();

更改<path to phpExcel...><path to Common...>使用正确的路径。

于 2015-07-24T09:07:25.880 回答