我正在使用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
)
请回复我,非常紧急。
由于
答案 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);
请告诉我,我错过了什么......