1

さまざまなセルを含む新しい Excel ワークシートを作成するプログラムを開発しました。次のステップは、縦棒グラフを生成して、データ セルから取得したさまざまなデータを表示することです。

すべてのグラフの例は正常に機能し、特定の問題は発生しませんが、メソッドrangeToArray()fromArray()メソッドを呼び出して独自のグラフを作成しようとすると、ワークシートに何も表示されません。この問題を明確にするために、以下のコードのサブセットを参照してください。

最初のステップは、セルごとに 40 データの 2 つのセルを含む新しいワークシートを作成することですrangeToArray()。その後、メソッドを呼び出してこれらのセルからデータを取得します。最後のステップは、fromArray()メソッドを呼び出してこれらのデータを使用してグラフを作成することですが、機能しません。グラフは空のままです。タイトルとyAxisLabel.

メソッドに問題があると思われますが、そのfromArray()理由がわかりません。このアプローチを使用して同様の動作例を教えてください。前もって感謝します

$retrieve_data = array();

$retrieve_data = $worksheet->rangetoArray("D8:E48",null,null,null);

$worksheet = $objPHPExcel->getActiveSheet();   

$objWorksheet = $worksheet;   

$objWorksheet->fromArray($retrieve_data, NULL, 'D8', false);

$dataseriesLabels = array( new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$8', null, 1), new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$E$8', null, 1),);

$xAxisTickValues = array( new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$8:$D$27', null, 20),);

$dataSeriesValues = array( new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$8:$D$27', null, 20), new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$E$8:$E$27', null, 20),);

$series = new PHPExcel_Chart_DataSeries( PHPExcel_Chart_DataSeries::TYPE_BARCHART, plotType PHPExcel_Chart_DataSeries::GROUPING_STANDARD, range(0, count($dataSeriesValues)-1), $dataseriesLabels, $xAxisTickValues, $dataSeriesValues);

$series->setPlotDirection(PHPExcel_Chart_DataSeries::DIRECTION_COL);

$plotarea = new PHPExcel_Chart_PlotArea(null, array($series));

$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, null, false);

$title = new PHPExcel_Chart_Title('Test Column Chart');

$yAxisLabel = new PHPExcel_Chart_Title('Value');

$chart = new PHPExcel_Chart( 'chart1', $title, $legend, $plotarea, true, 0, null, $yAxisLabel);

$chart->setTopLeftPosition('G2');

$chart->setBottomRightPosition('S20');

$objWorksheet->addChart($chart);

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');   
header('Content-Disposition: attachment;filename="BAL_Delhaize2012.xlsx"');   
header('Cache-Control: max-age=0');

objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); 
$objWriter->setIncludeCharts(TRUE); 
$objWriter->save('php://output');
4

2 に答える 2

1

グラフの定義には、次の 2 つの明らかな問題があります。

$xAxisTickValues = array( 
    new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$8:$D$27', null, 20),
);

$dataSeriesValues = array( 
    new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$8:$D$27', null, 20), 
    new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$E$8:$E$27', null, 20),
);

データ系列値の最初のセットは、実際に x 軸の目盛り値と同じである必要がありますか?

$series = new PHPExcel_Chart_DataSeries( 
    PHPExcel_Chart_DataSeries::TYPE_BARCHART, 
    plotType PHPExcel_Chart_DataSeries::GROUPING_STANDARD, 
    range(0, count($dataSeriesValues)-1), 
    $dataseriesLabels, 
    $xAxisTickValues, 
    $dataSeriesValues
);

「plotType」という単語は、ここでパーサー エラーをスローする必要があります。

ただし、問題が fromArray() メソッドにあると思われる場合は、チャートなしでテストして、期待どおりに動作していることを確認してください。

于 2012-10-04T23:01:23.463 に答える
0

マーク、

おっと、あなたの質問に答えるのを忘れていました。私は私の例で間違いを犯しました。データ系列の値と x 軸の目盛り値に関するコードは次のとおりです。

$dataseriesLabels = array(
new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$8', null, 1),
new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$E$8', null, 1),);

$xAxisTickValues = array(
new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$9:$D$27', null, 20),);

ラベルは $D$8 と $E$8 のセルにあり、データは $D$9 から $D$27 までです

ところで、エラー メッセージが表示されない場合に、このクラスの問題をデバッグする最も簡単な方法は何ですか?

于 2012-10-05T04:22:44.057 に答える