创建图表时出错[phpexcel]

时间:2012-12-13 10:52:29

标签: phpexcel

我正在使用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

请回复我,非常紧急。

由于

1 个答案:

答案 0 :(得分: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 = Array (

[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('Test Stacked Line Chart'); $ yAxisLabel = new PHPExcel_Chart_Title('Value($ k)');

$ chart = new PHPExcel_Chart(     'chart1',//名称     $ title,//标题     $ legend,//传奇     $ plotarea,// plotArea     true,// plotVisibleOnly     0,// displayBlanksAs     null,// xAxisLabel     $ yAxisLabel // yAxisLabel );

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

$ objWorksheet-> addChart($图表);

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

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