我试图通过此代码从excel读取数据
$row['name'] = $objPHPExcel->getActiveSheet()->getCellByColumnAndRow(3, $l)->getCalculatedValue();
var_dump返回字符串(4)“CCC3”
但我有一个奇怪的问题
码
$row['name'] =
返回不能使用PHPExcel_Worksheet_Row类型的对象作为数组 如果我使用简单的
$row_name =
好吧....
使用phpExcel读取数据。
当然,我可以将它改为第二种选择,但我不知道,为什么它不起作用
感谢您的帮助
答案 0 :(得分:2)
我犯了同样的错误。我刚刚通过用其他变量重命名$row
来纠正错误。
这就是我所做的:
$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();
}
}
注意我已经改变了
foreach ($objWorksheet->getRowIterator() as $row) {
$cellIterator = $row->getCellIterator();
}
到
foreach ($objWorksheet->getRowIterator() as $rowsheet) {
$cellIterator = $rowsheet->getCellIterator();
}
它的工作就像一个魅力。
答案 1 :(得分:1)
$row
是一个对象,因此除非它实现ArrayAccess
,否则不能以这种方式设置属性。您的问题让我觉得$row
在这一点上只是一个未使用的变量,在这种情况下,您可以unset
和/或使其成为像$row = array();
这样的数组。
答案 2 :(得分:0)
您已经在脚本中先前将$row
的值设置为PHPExcel_Worksheet_Row对象,可能使用PHPExcel的行迭代器,因此$row
已作为对象存在。这意味着当您为$row['name']
赋值时,不能简单地依赖PHP将其重新定义为关联数组。
使用之前未使用的其他变量名称(例如$ rowdata),或者在尝试为其分配值之前使用unset($row);
。