2

我正在使用 PHPExcel 并在创建图表时遇到以下错误:

致命错误:在第 3241 行的 /opt/lampp/htdocs/scgcc/Classes/PHPExcel/Calculation.php 中的非对象上调用成员函数 cellExists()

这个错误发生在 $objWorksheet->addChart($chart);

图表变量返回如下:

PHPExcel_Chart 对象 ( [_name:PHPExcel_Chart:private] => chart1 [_worksheet:PHPExcel_Chart:private] => [_title:PHPExcel_Chart:private] => PHPExcel_Chart_Title 对象 ( [_caption:PHPExcel_Chart_Title:private] => 测试堆叠折线图 [_layout: PHPExcel_Chart_Title:private] => )

[_legend:PHPExcel_Chart:private] => PHPExcel_Chart_Legend Object
    (
        [_position:PHPExcel_Chart_Legend:private] => tr
        [_overlay:PHPExcel_Chart_Legend:private] => 
        [_layout:PHPExcel_Chart_Legend:private] => 
    )

[_xAxisLabel:PHPExcel_Chart:private] => 
[_yAxisLabel:PHPExcel_Chart:private] => PHPExcel_Chart_Title Object
    (
        [_caption:PHPExcel_Chart_Title:private] => Value ($k)
        [_layout:PHPExcel_Chart_Title:private] => 
    )

[_plotArea:PHPExcel_Chart:private] => PHPExcel_Chart_PlotArea Object
    (
        [_layout:PHPExcel_Chart_PlotArea:private] => 
        [_plotSeries:PHPExcel_Chart_PlotArea:private] => Array
            (
                [0] => PHPExcel_Chart_DataSeries Object
                    (
                        [_plotType:PHPExcel_Chart_DataSeries:private] => lineChart
                        [_plotGrouping:PHPExcel_Chart_DataSeries:private] => stacked
                        [_plotDirection:PHPExcel_Chart_DataSeries:private] => 
                        [_plotStyle:PHPExcel_Chart_DataSeries:private] => 
                        [_plotOrder:PHPExcel_Chart_DataSeries:private] => Array
                            (
                                [0] => 0
                                [1] => 1
                                [2] => 2
                                [3] => 3
                            )

                        [_plotLabel:PHPExcel_Chart_DataSeries:private] => Array
                            (
                                [0] => PHPExcel_Chart_DataSeriesValues Object
                                    (
                                        [_dataType:PHPExcel_Chart_DataSeriesValues:private] => String
                                        [_dataSource:PHPExcel_Chart_DataSeriesValues:private] => Worksheet!$B$1
                                        [_formatCode:PHPExcel_Chart_DataSeriesValues:private] => 
                                        [_marker:PHPExcel_Chart_DataSeriesValues:private] => 
                                        [_pointCount:PHPExcel_Chart_DataSeriesValues:private] => 1
                                        [_dataValues:PHPExcel_Chart_DataSeriesValues:private] => Array
                                            (
                                            )

                                    )

                                [1] => PHPExcel_Chart_DataSeriesValues Object
                                    (
                                        [_dataType:PHPExcel_Chart_DataSeriesValues:private] => String
                                        [_dataSource:PHPExcel_Chart_DataSeriesValues:private] => Worksheet!$C$1
                                        [_formatCode:PHPExcel_Chart_DataSeriesValues:private] => 
                                        [_marker:PHPExcel_Chart_DataSeriesValues:private] => 
                                        [_pointCount:PHPExcel_Chart_DataSeriesValues:private] => 1
                                        [_dataValues:PHPExcel_Chart_DataSeriesValues:private] => Array
                                            (
                                            )

                                    )

                                [2] => PHPExcel_Chart_DataSeriesValues Object
                                    (
                                        [_dataType:PHPExcel_Chart_DataSeriesValues:private] => String
                                        [_dataSource:PHPExcel_Chart_DataSeriesValues:private] => Worksheet!$D$1
                                        [_formatCode:PHPExcel_Chart_DataSeriesValues:private] => 
                                        [_marker:PHPExcel_Chart_DataSeriesValues:private] => 
                                        [_pointCount:PHPExcel_Chart_DataSeriesValues:private] => 1
                                        [_dataValues:PHPExcel_Chart_DataSeriesValues:private] => Array
                                            (
                                            )

                                    )

                                [3] => PHPExcel_Chart_DataSeriesValues Object
                                    (
                                        [_dataType:PHPExcel_Chart_DataSeriesValues:private] => String
                                        [_dataSource:PHPExcel_Chart_DataSeriesValues:private] => Worksheet!$E$1
                                        [_formatCode:PHPExcel_Chart_DataSeriesValues:private] => 
                                        [_marker:PHPExcel_Chart_DataSeriesValues:private] => 
                                        [_pointCount:PHPExcel_Chart_DataSeriesValues:private] => 1
                                        [_dataValues:PHPExcel_Chart_DataSeriesValues:private] => Array
                                            (
                                            )

                                    )

                            )

                        [_plotCategory:PHPExcel_Chart_DataSeries:private] => Array
                            (
                                [0] => PHPExcel_Chart_DataSeriesValues Object
                                    (
                                        [_dataType:PHPExcel_Chart_DataSeriesValues:private] => String
                                        [_dataSource:PHPExcel_Chart_DataSeriesValues:private] => Worksheet!$A$2:$A$6
                                        [_formatCode:PHPExcel_Chart_DataSeriesValues:private] => 
                                        [_marker:PHPExcel_Chart_DataSeriesValues:private] => 
                                        [_pointCount:PHPExcel_Chart_DataSeriesValues:private] => 5
                                        [_dataValues:PHPExcel_Chart_DataSeriesValues:private] => Array
                                            (
                                            )

                                    )

                            )

                        [_smoothLine:PHPExcel_Chart_DataSeries:private] => 
                        [_plotValues:PHPExcel_Chart_DataSeries:private] => Array
                            (
                                [0] => PHPExcel_Chart_DataSeriesValues Object
                                    (
                                        [_dataType:PHPExcel_Chart_DataSeriesValues:private] => Number
                                        [_dataSource:PHPExcel_Chart_DataSeriesValues:private] => Worksheet!$B$2:$B$6
                                        [_formatCode:PHPExcel_Chart_DataSeriesValues:private] => 
                                        [_marker:PHPExcel_Chart_DataSeriesValues:private] => 
                                        [_pointCount:PHPExcel_Chart_DataSeriesValues:private] => 5
                                        [_dataValues:PHPExcel_Chart_DataSeriesValues:private] => Array
                                            (
                                            )

                                    )

                                [1] => PHPExcel_Chart_DataSeriesValues Object
                                    (
                                        [_dataType:PHPExcel_Chart_DataSeriesValues:private] => Number
                                        [_dataSource:PHPExcel_Chart_DataSeriesValues:private] => Worksheet!$C$2:$C$6
                                        [_formatCode:PHPExcel_Chart_DataSeriesValues:private] => 
                                        [_marker:PHPExcel_Chart_DataSeriesValues:private] => 
                                        [_pointCount:PHPExcel_Chart_DataSeriesValues:private] => 5
                                        [_dataValues:PHPExcel_Chart_DataSeriesValues:private] => Array
                                            (
                                            )

                                    )

                                [2] => PHPExcel_Chart_DataSeriesValues Object
                                    (
                                        [_dataType:PHPExcel_Chart_DataSeriesValues:private] => Number
                                        [_dataSource:PHPExcel_Chart_DataSeriesValues:private] => Worksheet!$D$2:$D$6
                                        [_formatCode:PHPExcel_Chart_DataSeriesValues:private] => 
                                        [_marker:PHPExcel_Chart_DataSeriesValues:private] => 
                                        [_pointCount:PHPExcel_Chart_DataSeriesValues:private] => 5
                                        [_dataValues:PHPExcel_Chart_DataSeriesValues:private] => Array
                                            (
                                            )

                                    )

                                [3] => PHPExcel_Chart_DataSeriesValues Object
                                    (
                                        [_dataType:PHPExcel_Chart_DataSeriesValues:private] => Number
                                        [_dataSource:PHPExcel_Chart_DataSeriesValues:private] => Worksheet!$E$2:$E$6
                                        [_formatCode:PHPExcel_Chart_DataSeriesValues:private] => 
                                        [_marker:PHPExcel_Chart_DataSeriesValues:private] => 
                                        [_pointCount:PHPExcel_Chart_DataSeriesValues:private] => 5
                                        [_dataValues:PHPExcel_Chart_DataSeriesValues:private] => Array
                                            (
                                            )

                                    )

                            )

                    )

            )

    )

[_plotVisibleOnly:PHPExcel_Chart:private] => 1
[_displayBlanksAs:PHPExcel_Chart:private] => 0
[_topLeftCellRef:PHPExcel_Chart:private] => A13
[_topLeftXOffset:PHPExcel_Chart:private] => 0
[_topLeftYOffset:PHPExcel_Chart:private] => 0
[_bottomRightCellRef:PHPExcel_Chart:private] => H30
[_bottomRightXOffset:PHPExcel_Chart:private] => 10
[_bottomRightYOffset:PHPExcel_Chart:private] => 10

)

请回复我,非常紧急。

谢谢

4

1 回答 1

2

我的代码在下面,您可以在下面看到我正在使用键数组,因为我正在从数据库生成数组值。

我正在展示代码的简化形式,实际上实际代码有太多未知的东西 4 u。我在工作簿中生成 5 张工作表。

$objWorksheet = $objPHPExcel->getActiveSheet();

$objWorksheet->fromArray( 数组 (

[0] => Array
    (
        [0] => 
        [1] => 12/2011
        [2] => 01/2012
        [3] => 02/2012
    )

[1] => Array
    (
        [0] => QATAR
        [1] => 102.77
        [2] => 100
        [3] => 102.13
    )

[2] => Array
    (
        [0] => SAUDI ARABIA
        [1] => 102.74
        [2] => 100
        [3] => 98.22
    )

[3] => Array
    (
        [0] => KUWAIT
        [1] => 94.82
        [2] => 100
        [3] => 102.28
    )

[4] => Array
    (
        [0] => U.A.E.
        [1] => 101.22
        [2] => 100
        [3] => 99.94
    )

[5] => Array
    (
        [0] => OMAN
        [1] => 101.73
        [2] => 100
        [3] => 100.42
    )

));

$dataseriesLabels = (

[0] => new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$1,null, 1)
[1] => new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1,null, 1)
[2] => new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1,null, 1)

);

$xAxisTickValues = (

[0] => new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$6',null,5) );

$dataSeriesValues = 数组 (

[0] => new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$6',null,5)
[1] => new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$6,null,5)
[2] => new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$6,null,5)

);

$series = new PHPExcel_Chart_DataSeries(

PHPExcel_Chart_DataSeries::TYPE_LINECHART,      
PHPExcel_Chart_DataSeries::GROUPING_STACKED,    
range(0, count($dataSeriesValues)-1),           
$dataseriesLabels,                              
$xAxisTickValues,                               
$dataSeriesValues                               

);

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

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

$title = new PHPExcel_Chart_Title('测试堆积折线图'); $yAxisLabel = new PHPExcel_Chart_Title('Value ($k)');

$chart = new PHPExcel_Chart( 'chart1', // name $title, // 标题 $legend, // 图例 $plotarea, // plotArea true, // plotVisibleOnly 0, // displayBlanksAs null, // xAxisLabel $yAxisLabel // y轴标签);

$chart->setTopLeftPosition('A7'); $chart->setBottomRightPosition('H20');

$objWorksheet->addChart($chart);

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); $objWriter->setIncludeCharts(TRUE);

请告诉我我错过了什么.....

于 2012-12-15T14:25:51.263 回答