cannot use object as array in php?
I trying to read data from excel by this code
$row['name'] = $objPHPExcel->getActiveSheet()->getCellByColumnAndRow(3, $l)->getCalculatedValue();
var_dump returns string(4) "CCC3"
but i have a strange problem
code
$row['name'] =
returns Cannot use object of type PHPExcel_Worksheet_Row as array If I use simple
$row_name =
its ok....
to read data Im using phpExcel.
Of course, I can change it to second option, but I dont know, why its no开发者_高级运维t working
thanks for help
I was making the same mistake. I just corrected the mistake by renaming $row
with some other variable.
Here is what I have done:
$objReader = PHPExcel_IOFactory::createReaderForFile(ABSPATH.$row['file_path']);
$objReader->setReadDataOnly(true);
$objReader->setReadFilter( new MyReadFilter() );
$objPHPExcel = $objReader->load(ABSPATH.$row['file_path']);
$objPHPExcel = PHPExcel_IOFactory::load(ABSPATH.$row['file_path']);
$objWorksheet = $objPHPExcel->getActiveSheet();
foreach ($objWorksheet->getRowIterator() as $rowsheet) {
$cellIterator = $rowsheet->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false);
foreach ($cellIterator as $cell) {
$headarray[]= $cell->getValue();
}
}
Notice i have changed
foreach ($objWorksheet->getRowIterator() as $row) {
$cellIterator = $row->getCellIterator();
}
to
foreach ($objWorksheet->getRowIterator() as $rowsheet) {
$cellIterator = $rowsheet->getCellIterator();
}
and it's working like a charm.
$row
is an object, so you cannot set properties this way unless it implements ArrayAccess
. Your question makes me think $row
is just an unused variable at that point, in which case you can unset
that and/or make it an array like $row = array();
.
You've already set the value of $row
as a PHPExcel_Worksheet_Row object earlier in your script, perhaps using PHPExcel's row iterator, so $row
already exists as an object. This means that you can't simply rely on PHP to redefine it as an associative array when you assign a value to it as $row['name']
.
Either use another variable name (e.g. $rowdata) that hasn't previous been used, or unset($row);
before trying to assign a value to it.
精彩评论