fileUploaderFactory = $fileUploaderFactory; $this->mediaDirectory = $filesystem->getDirectoryWrite(DirectoryList::MEDIA); $this->storeManager = $storeManager; $this->fileSystem = $fileSystem; $this->driverFile = $driverFile; $this->customerCollection = $customerCollection; $this->salespersonRepository = $salespersonRepository; $this->salesperson = $salesperson; } public function execute() { $jsonResult = $this->resultFactory->create(ResultFactory::TYPE_JSON); try { $fileUploader = $this->fileUploaderFactory->create([ 'fileId' => 'salesperson[import]' ]); $fileUploader->setAllowedExtensions(['xls', 'xlsx']); $fileUploader->setAllowRenameFiles(true); $fileUploader->setAllowCreateFolders(true); $fileUploader->setFilesDispersion(false); $dir = $this->mediaDirectory->getAbsolutePath(DirectoryList::VAR_IMPORT_EXPORT.'/salesperson'); !is_dir($dir) && mkdir($dir, 0755, true); $data = $fileUploader->save($dir); $resource = $this->driverFile->fileOpen($dir.'/'.$fileUploader->getUploadedFileName(), 'r'); /* @var $logger \Psr\Log\LoggerInterface */ $logger = \Magento\Framework\App\ObjectManager::getInstance()->get(\Psr\Log\LoggerInterface::class); try { $spreadsheet = IOFactory::load($dir.'/'.$fileUploader->getUploadedFileName()); $data = $spreadsheet->getActiveSheet()->toArray(); array_shift($data); foreach ($data as $content) { try { array_walk($content, function (&$value) { if (is_string($value)) { $value = trim($value); } }); if (empty(array_filter($content))) { continue; } $content = array_slice($content, 0, 5); $row = array_combine( ['name', 'email', 'telephone', 'rsm_email', 'sisr_email', 'csr_email'], $content ); $this->salesperson->setData($row); $this->salespersonRepository->save($this->salesperson); $this->salesperson->unsetData(); } catch (FileSystemException | \Exception $e) { $logger->critical('导入销售失败,原因:'.$e->getMessage(), ['data' => $row]); } } $this->driverFile->fileClose($resource); $this->driverFile->deleteFile($dir.'/'.$fileUploader->getUploadedFileName()); } catch (FileSystemException $exception) { $logger->debug($exception->getMessage()); } return $jsonResult->setData($data); } catch (LocalizedException | \Exception $error) { return $jsonResult->setData(['errorcode' => 0, 'error' => $error->getMessage()]); } } }