2016-03-29 2 views
1

イムラベル...PhpOffice/PhpWordチャート - カントショー軸、グリッド、PhpOffice/PhpWordからSample_32_Chart.phpを使用して

それは働いているが、私は私のチャートは軸、シリーズ、ラベル、タイトルを得ることが大好きです、など...それらに。

は、ドキュメント http://phpoffice.github.io/PHPWord/docs/master/classes/PhpOffice.PhpWord.Element.Chart.html

に探してみました。しかし、私のニーズにどの近いものはありません。

何か助けが素晴らしいだろう。

Sample_32_Chart.phpあるいくつかのコード

<?php 
include_once 'Sample_Header.php'; 

use PhpOffice\PhpWord\Shared\Converter; 

// New Word document 
echo date('H:i:s'), ' Create new PhpWord object', EOL; 

$phpWord = new \PhpOffice\PhpWord\PhpWord(); 
$phpWord->addTitleStyle(1, array('size' => 14, 'bold' => true), array('keepNext' => true, 'spaceBefore' => 240)); 
$phpWord->addTitleStyle(2, array('size' => 14, 'bold' => true), array('keepNext' => true, 'spaceBefore' => 240)); 

// 2D charts 
$section = $phpWord->addSection(); 
$section->addTitle(htmlspecialchars('2D charts', ENT_COMPAT, 'UTF-8'), 1); 
$section = $phpWord->addSection(array('colsNum' => 2, 'breakType' => 'continuous')); 

$chartTypes = array('pie', 'doughnut', 'bar', 'column', 'line', 'area', 'scatter', 'radar'); 
$twoSeries = array('bar', 'column', 'line', 'area', 'scatter', 'radar'); 
$threeSeries = array('bar', 'line'); 
$categories = array('A', 'B', 'C', 'D', 'E'); 
$series1 = array(1, 3, 2, 5, 4); 
$series2 = array(3, 1, 7, 2, 6); 
$series3 = array(8, 3, 2, 5, 4); 

foreach ($chartTypes as $chartType) { 
    $section->addTitle(ucfirst($chartType), 2); 
    $chart = $section->addChart($chartType, $categories, $series1); 
    $chart->getStyle()->setWidth(Converter::inchToEmu(2.5))->setHeight(Converter::inchToEmu(2)); 

    if (in_array($chartType, $twoSeries)) { 
     $chart->addSeries($categories, $series2); 
    } 
    if (in_array($chartType, $threeSeries)) { 
     $chart->addSeries($categories, $series3); 
    } 
    $section->addTextBreak(); 
} 

// 3D charts 
$section = $phpWord->addSection(array('breakType' => 'continuous')); 
$section->addTitle(htmlspecialchars('3D charts', ENT_COMPAT, 'UTF-8'), 1); 
$section = $phpWord->addSection(array('colsNum' => 2, 'breakType' => 'continuous')); 

$chartTypes = array('pie', 'bar', 'column', 'line', 'area'); 
$multiSeries = array('bar', 'column', 'line', 'area'); 
$style = array('width' => Converter::cmToEmu(5), 'height' => Converter::cmToEmu(4), '3d' => true); 
foreach ($chartTypes as $chartType) { 
    $section->addTitle(ucfirst($chartType), 2); 
    $chart = $section->addChart($chartType, $categories, $series1, $style); 
    if (in_array($chartType, $multiSeries)) { 
     $chart->addSeries($categories, $series2); 
     $chart->addSeries($categories, $series3); 
    } 
    $section->addTextBreak(); 
} 

// Save file 
echo write($phpWord, basename(__FILE__, '.php'), $writers); 
if (!CLI) { 
    include_once 'Sample_Footer.php'; 
} 

、このリンクでは、私は誰かがすでに追加始めるこの機能について話しますが、それらを使用する方法を知らないい。事前に

https://github.com/PHPOffice/PHPWord/pull/576

ありがとう!

+0

Alberto、PHPWordのチャートに軸、シリーズ、ラベル、タイトルなどを追加する方法を理解しましたか? – PHPDave

+0

残念ながら@PHPDaveはありません。代わりにPHPExcelに行きました。それを使って見栄えの良いチャートを得ました。 –

+0

驚くばかりです。その後、PHPExcelからチャートをエクスポートしてPHPWordにインポートしましたか?私はXMLで移植し、手動でデータシリーズを追加することを検討しています – PHPDave

答えて

0

私はこれをちょっと試して、生のXMLグラフ設定を渡してPHPWordに出力させるためのいくつかの変更を思いつきました。 https://github.com/PHPOffice/PHPWord/issues/957 - そのスレッドに関する私の2番目のコメントを参照してください。

関連する問題