Rzangue が述べたように、PHPExcel は現在これを行う簡単な方法を提供していませんが、PHPExcel で作成されたすべてのグラフの変更をハードコーディングすることを気にしない場合は、以下に提案されている変更を PHPExcel/Classes/Writer に加えることができます。 /Excel2007/Chart.php ファイル。
チャートの境界線の色を変更するには、パブリック関数 writeChart() 内に以下を追加します。
$cBorderColor = "000000";
$objWriter->startElement('c:spPr');
$objWriter->startElement('a:ln');
$objWriter->startElement('a:solidFill');
$objWriter->startElement('a:srgbClr');
$objWriter->writeAttribute('val',$cBorderColor);
$objWriter->endElement();
$objWriter->endElement();
$objWriter->endElement();
$objWriter->endElement();
後:
$objWriter->startElement('c:showDLblsOverMax');
$objWriter->writeAttribute('val', 0);
$objWriter->endElement();
$objWriter->endElement();
しかし、前に:
$this->_writePrintSettings($objWriter);
これは、Chart.php ファイルの 106 行目あたりにあります。
明らかに、「000000」を、チャートの境界線の色にしたいWebの色に置き換えます。境界線の色を完全に削除するには、次を挿入します。
$objWriter->startElement('c:spPr');
$objWriter->startElement('a:ln');
$objWriter->startElement('a:noFill');
$objWriter->endElement();
$objWriter->endElement();
$objWriter->endElement();
代わりは。
次に、グラフ内のプロット エリアの位置を変更するには、Chart.php ファイル内をプライベート関数 _writeLayout() までスクロールします。
開き括弧と閉じ括弧以外の関数内のすべてのコードを削除します{}
。関数内で、次を追加します。
$layoutTarget = "inner";
$xMode = "edge";
$yMode = "edge";
$xOffset = 0.1; //The left margin in percentage of graph width.
$yOffset = 0.1; //The top margin in percentage of graph width.
$paWidth = 0.9; //The percentage width of the plot area relative to the graph width;
$paHeight = 0.9; //The percentage height of the plot area relative to the graph height;
$objWriter->startElement('c:layout');
$objWriter->startElement('c:manualLayout');
$objWriter->startElement('c:layoutTarget');
$objWriter->writeAttribute('val',$layoutTarget);
$objWriter->endElement();
$objWriter->startElement('c:xMode');
$objWriter->writeAttribute('val',$xMode);
$objWriter->endElement();
$objWriter->startElement('c:yMode');
$objWriter->writeAttribute('val',$yMode);
$objWriter->endElement();
$objWriter->startElement('c:x');
$objWriter->writeAttribute('val',$xOffset);
$objWriter->endElement();
$objWriter->startElement('c:y');
$objWriter->writeAttribute('val',$yOffset);
$objWriter->endElement();
$objWriter->startElement('c:w');
$objWriter->writeAttribute('val',$paWidth);
$objWriter->endElement();
$objWriter->startElement('c:h');
$objWriter->writeAttribute('val',$paHeight);
$objWriter->endElement();
$objWriter->endElement();
$objWriter->endElement();
その後、必要に応じて x/y オフセットと w/h を調整できます。
各データ系列の色を制御/変更するには:
private function _writePlotGroup()
前:
foreach($plotSeriesOrder as $plotSeriesIdx => $plotSeriesRef) {
追加:
$ci=-1;
$colorNDX=array();
$colorNDX[0] = "111111";
$colorNDX[1] = "222222";
$colorNDX[2] = "333333";
$colorNDX[3] = "444444";
$colorNDX[4] = "555555";
$colorNDX[5] = "666666";
$colorNDX[6] = "777777";
など、すべての一連のデータに十分なカラー インデックスを追加し、111111、222222、333333 を好みの Web カラーに変更します。
また、後:
foreach($plotSeriesOrder as $plotSeriesIdx => $plotSeriesRef) {
追加:
$ci++;
以降:
// Labels
$plotSeriesLabel = $plotGroup->getPlotLabelByIndex($plotSeriesRef);
if ($plotSeriesLabel && ($plotSeriesLabel->getPointCount() > 0)) {
$objWriter->startElement('c:tx');
$objWriter->startElement('c:strRef');
$this->_writePlotSeriesLabel($plotSeriesLabel, $objWriter);
$objWriter->endElement();
$objWriter->endElement();
}
追加:
$objWriter->startElement('c:spPr');
$objWriter->startElement('a:solidFill');
$objWriter->startElement('a:srgbClr');
$objWriter->writeAttribute('val',$colorNDX[$ci]);
$objWriter->endElement();
$objWriter->endElement();
$objWriter->endElement();
これが役立つかどうか教えてください。繰り返しますが、これらの変更は PHPExcel によって生成されたすべてのチャートに適用されますが、if
チャートの種類ごとに変更をより動的にするには、適切に配置されたいくつかのステートメントで十分です。