Я написал API, который импортирует файл xlsx.Это прекрасно работает.
В следующей функции я написал логику, которая должна извлечь этот файл, но я не знаю, что вызывает эту ошибку:
Вызов функции-члена getRowIterator() ноль
Мой первый звонок:
public function importXlsx($fileLocation)
{
$reader = IOFactory::createReader('Xlsx');
$reader->setReadDataOnly(true);
$spreadsheet = $reader->load($fileLocation);
$this->importSheet($spreadsheet, 'One', function(User $user) {
$user->setType();
return $user;
});
$this->importSheet($spreadsheet, 'Two', function(User $user) {
$user->setType2();
return $user;
});
die('done');
}
Мой второй звонок:
private function importSheet($spreadsheet, $sheetName, callable $additionalManipulation = null)
{
$worksheet = $spreadsheet->getSheetByName($sheetName);
$columnMappings = [
'First Name' => 'firstName',
'Surname' => 'lastName',
'Email' => 'email',
];
$headerColumns = null;
$data = [];
foreach ($worksheet->getRowIterator() as $index => $row) {
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(FALSE);
$rowData = [];
foreach ($cellIterator as $cell) {
$rowData[]= $cell->getValue();
}
if($index == 1) {
$headerColumns = $rowData;
} else {
$rowData = array_combine($headerColumns, $rowData);
$data[$index] =$rowData;
}
}