$dirName = "./models"; foreachDir($dirName); ?> </div> </div> <!-- upload model file form --> <div> <hr> <h4>上传模版 (上传新的模版或替换掉旧的模版)</h4> <form action="#tip" method="post" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="5000000"/> <input type="file" name="modelFile" id="modelFile"/> <input type="submit" name="subModel" id = "subModel" value="提交"/> </form> </div> <div id = "tip"> <?php //处理上传模版表单 if (isset($_POST['subModel'])) { $modelFile = $_FILES['modelFile']; $modelFilePath = loadModel($modelFile); isuploadOk($modelFile, $modelFilePath); } ?> </div> </body> </html>
/** * @desc 读取excel文件 * @return array $productMessage 包含excel信息的多维数组 */ function readExcel() { $productMessage = array(); //存储所有的excel数据 $excelFile = $_FILES['excelFile']; if (!empty($excelFile)) { $excelFilePath = loadExcel($excelFile); //上传文件,得到excel文件路径 } else { echo "请选择excel文件"; } $isuploadOk = isuploadOk($excelFile, $excelFilePath); //判断是否上传成功 //如果excel上传成功 if ($isuploadOk) { // Error reporting error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); define('EOL', PHP_SAPI == 'cli' ? PHP_EOL : "\n"); require_once 'Classes/PHPExcel.php'; //引入类库 $PHPReader = new PHPExcel_Reader_Excel2007(); //如果没有选择excel文件 if (!$PHPReader->canRead($excelFilePath)) { $PHPReader = new PHPExcel_Reader_Excel5(); if (!$PHPReader->canRead($excelFilePath)) { echo 'no Excel'; return; } } $PHPExcel = $PHPReader->load($excelFilePath); //传入excel路径,载入该excel //sheet 0 $currentSheet = $PHPExcel->getSheet(0); //column Count $allColumn = $currentSheet->getHighestColumn(); //列 //Row Count $allRow = $currentSheet->getHighestRow(); //行 /**excel 中需要读的参数**/ $arrRPProTitle = array(); //产品标题 $arrRPVideoUrl = array(); //视频链接 $arrRPProDesc = array(); //产品描述 $arrRPProPic = array(); //产品图片 $arrRPBanner = array(); //海报图 $arrRPResultShowPicSrc = array(); //场景图 $arrRPProPackage = array(); //产品包裹 $arrRPProBrightSpot = array(); //产品亮点 $arrRPShoppingDetails = array(); //购物细节 $arrRPAAdProBEFORE = array(); //A类推广产品:连接DB处理前 $arrRPAAdProBEFORE = array(); //B类推广产品:连接DB处理前 $arrRPBCdProBEFORE = array(); //C类推广产品:连接DB处理前 $arrRPDAdProBEFORE = array(); //D类推广产品:连接DB处理前 $arrRPOters = array(); //其它 $arrRPCertificate = array(); //证书 $arrRPSamePara = array(); //共同参数 $arrRPDiffPara = array(); //不同参数 $arrDiffPataTableNum = array(); //不同参数参数表 $arrTabTitleA = array(); $arrTabHeadA = array(); $arrTabContA = array(); $arrTabTitleB = array(); $arrTabHeadB = array(); $arrTabContB = array(); $colBIndex = "B"; //B列 $colCIndex = "C"; //C列 $colDIndex = "D"; //D列 $colEIndex = "E"; //E列 $colFIndex = "F"; //E列 $tableNum = 0; //产品一级分类类型数(excel中有多少个参数规格表就是几) //开始循环读取每个单元格的内容 for ($rowIndex = 1; $rowIndex <= $allRow; $rowIndex++) { //从第一行开始循环 for ($colIndex = 'A'; $colIndex <= $allColumn; $colIndex++) { //从A列开始循环 $addr = $colIndex . $rowIndex; //单元格地址:列名.行名 $cell = trim($currentSheet->getCell($addr)->getValue()); //得到单元格内容,并去掉单元格开头和结尾处的空格 if ($cell instanceof PHPExcel_RichText) { //处理富文本 $cell = $cell->__toString(); } //产品标题 if ($cell === "产品标题") { $addrBCol = $colBIndex . $rowIndex; $cellBCol = trim($currentSheet->getCell($addrBCol)->getValue()); $arrRPProTitle[] = $cellBCol; } //end 产品标题 //视频链接 if ($cell === "视频链接") { $addrBCol = $colBIndex . $rowIndex; $cellBCol = trim($currentSheet->getCell($addrBCol)->getValue()); $arrRPVideoUrl[] = $cellBCol; } //end 视频链接 //=============================================== //产品描述 if ($cell === "产品描述") { //产品描述内容 $addrBCol = $colBIndex . $rowIndex; $cellBCol = trim($currentSheet->getCell($addrBCol)->getValue()); $arrRPProDesc[] = $cellBCol; } //end 产品描述 //=============================================== //产品图片 if ($cell === "产品图片") { //产品图片URL $addrBCol = $colBIndex . $rowIndex; $cellBCol = trim($currentSheet->getCell($addrBCol)->getValue()); //产品图片title $addrCCol = $colCIndex . $rowIndex; $cellCCol = trim($currentSheet->getCell($addrCCol)->getValue()); $arrRPProPic[] = array($cellBCol, $cellCCol); } //end 产品图片 //=============================================== //海报图 if ($cell === "海报图") { //海报图图片URL $addrBCol = $colBIndex . $rowIndex; $cellBCol = trim($currentSheet->getCell($addrBCol)->getValue()); //海报图跳转Href $addrCCol = $colCIndex . $rowIndex; $cellCCol = trim($currentSheet->getCell($addrCCol)->getValue()); $arrRPBanner[] = array($cellBCol, $cellCCol); } //end 海报图 //=============================================== //场景图 if ($cell === "场景图") { //场景图片URL $addrBCol = $colBIndex . $rowIndex; $cellBCol = trim($currentSheet->getCell($addrBCol)->getValue()); $arrRPResultShowPicSrc[] = $cellBCol; } //end 场景图 //=============================================== //产品包裹 if ($cell === "产品包裹") { $addrBCol = $colBIndex . $rowIndex; $cellBCol = trim($currentSheet->getCell($addrBCol)->getValue()); $arrRPProPackage[] = $cellBCol; } //end 产品包裹 //=============================================== //产品亮点 if ($cell === "产品亮点") { //产品亮点title $addrBCol = $colBIndex . $rowIndex; $cellBCol = trim($currentSheet->getCell($addrBCol)->getValue()); //产品亮点图片 $addrCCol = $colCIndex . $rowIndex; $cellCCol = trim($currentSheet->getCell($addrCCol)->getValue()); //产品亮点文本 $addrDCol = $colDIndex . $rowIndex; $cellDCol = trim($currentSheet->getCell($addrDCol)->getValue()); $arrRPProBrightSpot[] = array($cellBCol, $cellCCol, $cellDCol); } //end 产品亮点 //=============================================== //购物细节 if ($cell === "购物细节") { //购物细节Title $addrBCol = $colBIndex . $rowIndex; $cellBCol = trim($currentSheet->getCell($addrBCol)->getValue()); //购物细节Cont $addrCCol = $colCIndex . $rowIndex; $cellCCol = trim($currentSheet->getCell($addrCCol)->getValue()); //购物细节Pic $addrDCol = $colDIndex . $rowIndex; $cellDCol = trim($currentSheet->getCell($addrDCol)->getValue()); $arrRPShoppingDetails[] = array($cellBCol, $cellCCol, $cellDCol); //title,cont,pic } //end 购物细节 //=============================================== //A类推广产品 if ($cell === "A类推广产品") { //标题 $addrBCol = $colBIndex . $rowIndex; $cellBCol = trim($currentSheet->getCell($addrBCol)->getValue()); //推广产品Account $addrCCol = $colCIndex . $rowIndex; $cellCCol = trim($currentSheet->getCell($addrCCol)->getValue()); //推广产品ItemNumber $addrDCol = $colDIndex . $rowIndex; $cellDCol = trim($currentSheet->getCell($addrDCol)->getValue()); //推广产品运费 $addrECol = $colEIndex . $rowIndex; $cellECol = trim($currentSheet->getCell($addrECol)->getValue()); $arrRPAAdProBEFORE[] = array($cellBCol, $cellCCol, $cellDCol, $cellECol); } //end A类推广产品 //=============================================== //B类推广产品 if ($cell === "B类推广产品") { //标题 $addrBCol = $colBIndex . $rowIndex; $cellBCol = trim($currentSheet->getCell($addrBCol)->getValue()); //推广产品Account $addrCCol = $colCIndex . $rowIndex; $cellCCol = trim($currentSheet->getCell($addrCCol)->getValue()); //推广产品ItemNumber $addrDCol = $colDIndex . $rowIndex; $cellDCol = trim($currentSheet->getCell($addrDCol)->getValue()); //推广产品运费 $addrECol = $colEIndex . $rowIndex; $cellECol = trim($currentSheet->getCell($addrECol)->getValue()); $arrRPBAdProBEFORE[] = array($cellBCol, $cellCCol, $cellDCol, $cellECol); } //end B类推广产品 //=============================================== //C类推广产品 if ($cell === "C类推广产品") { //标题 $addrBCol = $colBIndex . $rowIndex; $cellBCol = trim($currentSheet->getCell($addrBCol)->getValue()); //推广产品Account $addrCCol = $colCIndex . $rowIndex; $cellCCol = trim($currentSheet->getCell($addrCCol)->getValue()); //推广产品ItemNumber $addrDCol = $colDIndex . $rowIndex; $cellDCol = trim($currentSheet->getCell($addrDCol)->getValue()); //推广产品运费 $addrECol = $colEIndex . $rowIndex; $cellECol = trim($currentSheet->getCell($addrECol)->getValue()); $arrRPCAdProBEFORE[] = array($cellBCol, $cellCCol, $cellDCol, $cellECol); } //end C类推广产品 //=============================================== //D类推广产品 if ($cell === "D类推广产品") { //标题 $addrBCol = $colBIndex . $rowIndex; $cellBCol = trim($currentSheet->getCell($addrBCol)->getValue()); //推广产品Account $addrCCol = $colCIndex . $rowIndex; $cellCCol = trim($currentSheet->getCell($addrCCol)->getValue()); //推广产品ItemNumber $addrDCol = $colDIndex . $rowIndex; $cellDCol = trim($currentSheet->getCell($addrDCol)->getValue()); //推广产品运费 $addrECol = $colEIndex . $rowIndex; $cellECol = trim($currentSheet->getCell($addrECol)->getValue()); $arrRPDAdProBEFORE[] = array($cellBCol, $cellCCol, $cellDCol, $cellECol); } //end D类推广产品 //=============================================== //其它 if ($cell === "其它") { //Title $addrBCol = $colBIndex . $rowIndex; $cellBCol = trim($currentSheet->getCell($addrBCol)->getValue()); //其它图片 $addrCCol = $colCIndex . $rowIndex; $cellCCol = trim($currentSheet->getCell($addrCCol)->getValue()); //其它文本 $addrDCol = $colDIndex . $rowIndex; $cellDCol = trim($currentSheet->getCell($addrDCol)->getValue()); $arrRPOters[] = array($cellBCol, $cellCCol, $cellDCol); } //end 其它 //=============================================== //证书 if ($cell === "证书") { //证书Title $addrBCol = $colBIndex . $rowIndex; $cellBCol = trim($currentSheet->getCell($addrBCol)->getValue()); //证书Cont $addrCCol = $colCIndex . $rowIndex; $cellCCol = trim($currentSheet->getCell($addrCCol)->getValue()); $arrRPCertificate[] = array($cellBCol, $cellCCol); } //end 证书 //=============================================== //共同参数 if ($cell === "共同参数") { //共同参数参数名name $addrBCol = $colBIndex . $rowIndex; $cellBCol = trim($currentSheet->getCell($addrBCol)->getValue()); //共同参数参数内容cont $addrCCol = $colCIndex . $rowIndex; $cellCCol = trim($currentSheet->getCell($addrCCol)->getValue()); $arrRPSamePara[] = array($cellBCol, $cellCCol); } //end 共同参数 //=============================================== //自定义表格 --表标题 if ($cell === "表标题A") { //表标题 $addrBCol = $colBIndex . $rowIndex; $cellBCol = trim($currentSheet->getCell($addrBCol)->getValue()); $arrTabTitleA[] = $cellBCol; } //end 自定义表格 --表标题 //=============================================== //自定义表格 --表头 if ($cell === "表头A") { //表头 $addrBCol = $colBIndex . $rowIndex; $cellBCol = trim($currentSheet->getCell($addrBCol)->getValue()); //将字符串数值的表头值转为数组 $arrTabHeadA = explode(',', $cellBCol); //取出每个表头值的两头的空格 foreach ($arrTabHeadA as &$v) { $v = trim($v); } } //end 自定义表格--表头 //=============================================== //自定义表格 --表内容 if ($cell === "表内容A") { //表内容 $addrBCol = $colBIndex . $rowIndex; $cellBCol = trim($currentSheet->getCell($addrBCol)->getValue()); //将字符串数值的表头值转为数组 $arrTabContA = explode('\\n', $cellBCol); foreach ($arrTabContA as &$v) { $v = explode(',', $v); foreach ($v as &$vv) { $vv = trim($vv); } } } //end 自定义表格--表内容 //=============================================== //自定义表格 --表标题 if ($cell === "表标题B") { //表标题 $addrBCol = $colBIndex . $rowIndex; $cellBCol = trim($currentSheet->getCell($addrBCol)->getValue()); $arrTabTitleB[] = $cellBCol; } //end 自定义表格 --表标题 //=============================================== //自定义表格 --表头 if ($cell === "表头B") { //表头 $addrBCol = $colBIndex . $rowIndex; $cellBCol = trim($currentSheet->getCell($addrBCol)->getValue()); //将字符串数值的表头值转为数组 $arrTabHeadB = explode(',', $cellBCol); //取出每个表头值的两头的空格 foreach ($arrTabHeadB as &$v) { $v = trim($v); } } //end 自定义表格--表头 //=============================================== //自定义表格 --表内容 if ($cell === "表内容B") { //表内容 $addrBCol = $colBIndex . $rowIndex; $cellBCol = trim($currentSheet->getCell($addrBCol)->getValue()); //将字符串数值的表头值转为数组 $arrTabContB = explode('\\n', $cellBCol); foreach ($arrTabContB as &$v) { $v = explode(',', $v); foreach ($v as &$vv) { $vv = trim($vv); } } } //end 自定义表格--表内容 //=============================================== // 产品分类和小图 if ($cell === "产品分类") { $rowIndexNext = $rowIndex + 1; //产品分类 $addrNextRow = $colIndex . $rowIndexNext; //下一行 $cellNextRow = trim($currentSheet->getCell($addrNextRow)->getValue()); //classify0 //小图 $addrNextRowDcol = $colDIndex . $rowIndexNext; //下一行 $cellNextRowDcol = trim($currentSheet->getCell($addrNextRowDcol)->getValue()); //samllpicSrc $arrRPDiffPara[] = array("0" => $cellNextRow, "2" => $cellNextRowDcol); } //end 产品分类和小图 //=============================================== //不同参数表 if ($cell === "产品规格") { $rowIndexNext = $rowIndex; do { $rowIndexNext++; $addrNextRow = $colIndex . $rowIndexNext; //下一行 $cellNextRow = trim($currentSheet->getCell($addrNextRow)->getValue()); //3w//5w $addrCCol = $colCIndex . $rowIndexNext; //C列 $cellCCol = trim($currentSheet->getCell($addrCCol)->getValue()); //33//55 //判断读取多少行二级分类产品规格 if (!($cellNextRow === "产品规格" || empty($cellNextRow))) { //0 //1 $arrProDiffParaNum[] = array($cellNextRow, $cellCCol); //array(array('3w','33'),array('5w','55'),); } } while (!($cellNextRow === "产品规格" || empty($cellNextRow))); //把二级产品分类数组赋给二级产品分类总数组,并清空二级产品分类数组,准备下次的分类存储 $arrDiffPataTableNum[$tableNum] = $arrProDiffParaNum; $arrProDiffParaNum = array(); $tableNum++; } //end -产品规格 //=============================================== } //end-col(结束列循环) } //end-row(结束行循环) /**整合处理不同参数分类名 小图和不同参数表*/ $diffParaTableCount = count($arrDiffPataTableNum); //产品分类数量//3 for ($i = 0; $i < $diffParaTableCount; $i++) { $arrRPDiffPara[$i][1] = $arrDiffPataTableNum[$i]; } /**查询数据库返回处理后 的推广类产品的数组**/ $arrRPAAdProAFTER = array(); $arrRPBAdProAFTER = array(); $arrRPCAdProAFTER = array(); $arrRPDAdProAFTER = array(); if (!empty($arrRPAAdProBEFORE)) { $arrRPAAdProAFTER = ADRPProDB($arrRPAAdProBEFORE); } if (!empty($arrRPBAdProBEFORE)) { $arrRPBAdProAFTER = ADRPProDB($arrRPBAdProBEFORE); } if (!empty($arrRPCAdProBEFORE)) { $arrRPCAdProAFTER = ADRPProDB($arrRPCAdProBEFORE); } if (!empty($arrRPDAdProBEFORE)) { $arrRPDAdProAFTER = ADRPProDB($arrRPDAdProBEFORE); } /**将所有数组整合成一个数组以便返回**/ $productMessage["产品标题"] = $arrRPProTitle; $productMessage["视频链接"] = $arrRPVideoUrl; $productMessage["产品描述"] = $arrRPProDesc; $productMessage["产品图片"] = $arrRPProPic; $productMessage["海报图"] = $arrRPBanner; $productMessage["场景图"] = $arrRPResultShowPicSrc; $productMessage["产品包裹"] = $arrRPProPackage; $productMessage["产品亮点"] = $arrRPProBrightSpot; $productMessage["购物细节"] = $arrRPShoppingDetails; $productMessage["A类推广产品"] = $arrRPAAdProAFTER; $productMessage["B类推广产品"] = $arrRPBAdProAFTER; $productMessage["C类推广产品"] = $arrRPCAdProAFTER; $productMessage["D类推广产品"] = $arrRPDAdProAFTER; $productMessage["其它"] = $arrRPOters; $productMessage["证书"] = $arrRPCertificate; $productMessage["共同参数"] = $arrRPSamePara; $productMessage['不同参数'] = $arrRPDiffPara; $productMessage['表标题A'] = $arrTabTitleA; $productMessage['表头A'] = $arrTabHeadA; $productMessage['表内容A'] = $arrTabContA; $productMessage['表标题B'] = $arrTabTitleB; $productMessage['表头B'] = $arrTabHeadB; $productMessage['表内容B'] = $arrTabContB; } //end-IF($isuploadO) //存储数据到数组后,便可删除excel表 if (file_exists($excelFilePath)) { unlink($excelFilePath); } //var_dump($productMessage);die; return $productMessage; }