このライブラリを使用して PHP 経由で PowerPoint プレゼンテーションを作成しようとしています。PowerPoint 内でチャート オブジェクトを作成しようとすると、ファイルをダウンロードして Microsoft Office で開くと、チャートを編集できません。
PowerPoint ファイル内にグラフを作成し、Office PowerPoint で編集できるライブラリはありますか?
このライブラリを使用して PHP 経由で PowerPoint プレゼンテーションを作成しようとしています。PowerPoint 内でチャート オブジェクトを作成しようとすると、ファイルをダウンロードして Microsoft Office で開くと、チャートを編集できません。
PowerPoint ファイル内にグラフを作成し、Office PowerPoint で編集できるライブラリはありますか?
これは、PHPパワーポイントのバグである可能性があります。
ただし、最新バージョンのPHPExcelはグラフ作成をサポートしており、積極的に保守されています。これにより、PowerPointに簡単にコピーできるExcelでデータをグラフ化してエクスポートできます。
個人的には、 GoogleChartToolsまたはRaphaelJSを使用することをお勧めします。
PowerPointでグラフを使用できるようにする場合は、GoogleグラフデータをExcel(CSV)に簡単にエクスポートできます。この例も参照してください。
特にGoogleAnalyticsを紹介している場合は、GoogleAnalyticsからPowerPointで正確に自動的に更新されるグラフとデータを作成する方法についてこのドキュメントを読む必要があります。基本的にPowerPoint用のoomfoプラグインを使用します。
あるいは、このためのShufflePointのような有料のソリューションがあります。
PHPPowerPoint を使用して、編集可能なグラフをエクスポートできます。テストには 2 つの例があります。最初の例には Excel シートが含まれていないため、グラフは編集できません。しかし、test8 と思われる 2 番目の例を見ると、PHPExcel への参照呼び出しと、グラフと共にデータ シートを含めるためのフラグがあり、データを編集できることがわかります。
この URL を参照してください:-
PHP PowerPoint 2007 クラス
PowerPoint 2007 など、さまざまなファイル形式の読み書きを可能にする PHP プログラミング言語用の一連のクラスを提供するプロジェクト。このプロジェクトは、Microsoft の OpenXML 標準と PHP を中心に構築されています。
http://phppowerpoint.codeplex.com/
http://phppowerpoint.codeplex.com/sourcecontrol/list/changesets?ProjectName=phppowerpoint
特徴
http://phppowerpoint.codeplex.com/wikipage?title=機能&referringTitle=ホーム
これを試して:-
<?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 と呼ばれるようになっています) フォルダー内の samples フォルダー内
機能させるには、いくつかの変更/追加が必要であることに注意してください。
GitHub からダウンロードしCommon
、PHPOffice のフォルダーをどこかに保存します
からオートローダーをインクルードして登録するCommon
GitHub からダウンロードし、PHPExcel
フォルダのどこかに保存します
PHPExcel.php
メインファイルを含める
Sample_Header.php
ファイルで行を変更しました
Autoloader::register();
に
PhpOffice\PhpPresentation\Autoloader::register();
競合を避けるため (登録しているオートローダーは?)
ファイルで、Sample_Header.php
次の行も削除 (コメント) しました。
//require_once __DIR__ . '/../vendor/autoload.php';
エラーが発生しました(私はcomposerを使用しておらず、composerは必要ありません)。
以上で、編集可能な Excel データを内部に含む Powerpoint プレゼンテーションが作成されます。
これは、変更された 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...>