include KIF_PATH . '/PHPExcel.class.php'; //$inputFileType = 'Excel5'; $inputFileType = 'Excel2007'; $filePath = $this->excelFile; $objReader = PHPExcel_IOFactory::createReader($inputFileType); if (!$objReader->canRead($filePath)) { echo 'error file type'; exit(); } $objExcel = $objReader->load($filePath); $objSheet = $objExcel->getSheet(0); $allRow = $objSheet->getHighestRow(); $readColumns = array( 'D', // 专柜名称 'F', // 详细地址 'J', // 省 'K', // 市 'L', // 店铺电话 ); $startRow = 2; for ($currentRow = $startRow; $currentRow <= $allRow; $currentRow++) { $row = $currentRow; $rowStr = ''; foreach ($readColumns as $col) { $value = $objSheet->getCell($col . $row)->getValue(); $value = trim($value); if (strpos($value, ',') !== false) { $value = str_replace(',', ',', $value); echo $value . ' has , change to 中文逗号 '; echo PHP_EOL; } // 如果有 <202d>, 则表格内是空的 $string = $value; $tmpRes = array(); $length = strlen($string); for ($i = 0; $i < $length; $i++) { $tmpRes[] = '0x' . strtolower(base_convert(ord($string{$i}), 10, 16));//ord($string[$i]); } $tmpStr = implode('', $tmpRes); if (strpos($tmpStr, '0xe20x800xad') !== false) { echo $value . ' has special char, will set empty '; echo PHP_EOL; $value = ''; } // end foreach ($wordSearch as $search => $replace) { $rowStr = str_replace($search, $replace, $rowStr); } $rowStr = substr($rowStr, 0, -1); echo $rowStr . PHP_EOL; file_put_contents($csvFile, $rowStr . PHP_EOL, FILE_APPEND); }
读取excel中的图片
/** * 读excel里的内容 */ protected function readExcelData($filePath) { include KIF_PATH . '/PHPExcel.class.php'; // $inputFileType = 'Excel5'; $inputFileType = 'Excel2007'; $objReader = PHPExcel_IOFactory::createReader($inputFileType); if (!$objReader->canRead($filePath)) { echo 'error file type'; exit(); } $objExcel = $objReader->load($filePath); $objSheet = $objExcel->getSheet(0); $allRow = $objSheet->getHighestRow(); $datalist = array(); $readColumns = array( 'A' => 'name', // 抖音账号(选填) 'B' => 'douyin_url', // 抖音主页地址 'C' => 'star_url', // 个人主页地址 'D' => 'tag_scores', // 任务商品分类及得分 - 自定义字段名,需特殊处理 ); // 读取产品图片 $productImgs = array(); $drawing = new PHPExcel_Writer_Excel2007_Drawing(); $drawingHashTable = new PHPExcel_HashTable(); $drawingHashTable->addFromSource($drawing->allDrawings($objExcel)); for ($i = 0; $i < $drawingHashTable->count(); $i++) { $memoryDrawing = $drawingHashTable->getByIndex($i); if ($memoryDrawing instanceof PHPExcel_Worksheet_Drawing) { $tmpFile = $memoryDrawing->getPath(); $ext = $this->getImgExtByName($memoryDrawing->getIndexedFilename()); $imgFileName = date("His") . '_' . rand(10000, 99999) . '.' . $ext; $pathUrl = $this->imgFileUrl . '/' . $imgFileName; $path = $this->imgFilePath . '/' . $imgFileName; $copyRes = $this->copyfiles($tmpFile, $path, $pathUrl); $codPos = $memoryDrawing->getCoordinates(); // N20 if (!$copyRes) { $this->echo_msg($filePath . " " . $codPos . " read img fail"); continue; } $productImgs[$codPos] = $pathUrl; } } $startRow = 2; for ($currentRow = $startRow; $currentRow <= $allRow; $currentRow++) { $row = $currentRow; $tmpData = array(); foreach ($readColumns as $col => $field) { $value = $objSheet->getCell($col . $row)->getValue(); $value = trim($value); if (strpos($value, ',') !== false) { $value = str_replace(',', ',', $value); $this->echo_msg($value . ' has , change to 中文逗号 '); } // 如果有 <202d>, 则表格内是空的 $string = $value; $tmpRes = array(); $length = strlen($string); for ($i = 0; $i < $length; $i++) { $tmpRes[] = '0x' . strtolower(base_convert(ord($string{$i}), 10, 16));//ord($string[$i]); } $tmpStr = implode('', $tmpRes); if (strpos($tmpStr, '0xe20x800xad') !== false) { $this->echo_msg($value . ' has special char, will set empty '); } // 开始时间, 结束时间 - 特殊处理 if ($value && in_array($col, ['P', 'Q'])) { $value = date('Y-m-d', PHPExcel_Shared_Date::ExcelToPHP($value)); } // 产品图片 - 特殊处理 if ($col == 'N') { $value = isset($productImgs[$col . $row]) ? $productImgs[$col . $row] : ''; } $tmpData[$field] = $value; } if (!implode('', array_values($tmpData))) { $this->echo_msg($filePath . ' Line=' . $currentRow . ' is empty line'); continue; } $datalist[] = $tmpData; } return $datalist; } /** * 读取目录下的excel文件列表 * @param $dir * @return array */ protected function scanDir($dir) { $allFiles = scanDir($dir); $validFiles = array(); foreach ($allFiles as $file) { if (strpos($file, '.xlsx') == false) { continue; } $validFiles[] = $file; } return $validFiles; } protected function copyfiles($tmpFile, $filePath, $fileUrl) { $status = true; $contentx = @file_get_contents($tmpFile); $openedfile = fopen($filePath, "w"); fwrite($openedfile, $contentx); fclose($openedfile); if ($contentx === FALSE) { $status = false; } if (!$status) { return $status; } // 七牛存储 if ($this->uploadImg) { $objQiniuClient = new QiniuClient(); $qiniuRes = $objQiniuClient->uploadByFile($fileUrl, $filePath); if (!$qiniuRes->isSuccess()) { $status = false; @unlink($filePath); } } return $status; } protected function getImgExtByName($imgName) { $lastPos = strrpos($imgName, '.'); if (!$lastPos) { return 'jpg'; } $suffix = substr($imgName, $lastPos + 1); if ($suffix == 'jpeg') { $suffix = 'jpg'; } return $suffix; }