我正在尝试使用这个库通过 PHP 创建 PowerPoint 演示文稿。当我尝试在 PowerPoint 中创建图表对象时,我无法在下载文件并在 Microsoft Office 中打开它们时编辑图表。
是否有任何库可以在 PowerPoint 文件中构建图表并允许通过 Office PowerPoint 对其进行编辑?
我正在尝试使用这个库通过 PHP 创建 PowerPoint 演示文稿。当我尝试在 PowerPoint 中创建图表对象时,我无法在下载文件并在 Microsoft Office 中打开它们时编辑图表。
是否有任何库可以在 PowerPoint 文件中构建图表并允许通过 Office PowerPoint 对其进行编辑?
这很可能是 PHP Power Point 的一个错误。
但是,最新版本的PHPExcel支持 Charting 并得到积极维护。它允许您在 Excel 中绘制和导出数据,这些数据可以轻松复制到 PowerPoint。
不过,就个人而言,我建议您使用Google Chart Tools或RaphaelJS。
如果您希望能够在 PowerPoint 中使用图表,您可以轻松地将Google 图表数据导出到 Excel (CSV)。另请参阅此示例。
如果您专门介绍 Google Analytics,您应该阅读本文档,了解如何在 Google Analytics 的 PowerPoint 中创建准确的自动更新图表和数据。它基本上使用用于 PowerPoint的oomfo 插件。
或者,有像ShufflePoint这样的付费解决方案。
当然,您可以使用 PHPPowerPoint 导出可编辑图表。在测试中有两个例子。第一个示例不包括 Excel 工作表,这就是图表不可编辑的原因。但是,如果您查看我认为 test8 的第二个示例,那么您将看到对 PHPExcel 的引用调用和一个包含数据表和图表的标志,然后您可以编辑数据。
看到这个网址: -
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;
}
正确的示例现在称为:
Sample_05_Chart_with_PHPExcel.php
在主 PHPPowerpoint 内的示例文件夹中(现在他们开始将其称为 PHPPresentation)文件夹
请注意,要使其正常工作,您必须更改/添加一些内容。
从 GitHub 下载并将Common
PHPOffice的文件夹保存在某处
包括并注册自动加载器Common
从 GitHub 下载并将PHPExcel
文件夹保存在某处
包括主PHPExcel.php
文件
在Sample_Header.php
文件中我更改了行
Autoloader::register();
至
PhpOffice\PhpPresentation\Autoloader::register();
避免冲突(我们注册的是什么 Autoloader?)
在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...>
使用正确的路径。