public function updateIpExt() { $self = $this; Excel::selectSheets('全區')->load(__DIR__ . '/../../../../storage/excel/example/ip_ext.xls', $this->updateClosure()); Session::flash('success', '全部人員<b>Ip</b>以及<b>分機</b>更新完成'); return redirect('user'); }
public function upload() { //$file = Input::file('exclfile'); $s = array(); $path = 'C:/wamp/www/test-laravel-5-project/public/Test/quiz_info.xlsx'; Excel::selectSheets('sheet1')->load($path, function ($reader) { $reader->each(function ($sheet) { $sheet->each(function ($row) { array_push($s, $row); }); }); }); return Response::json($s); }
public function store() { //上传文件 //$file = $this->request->file('orderExcel'); $orderExcel = Excel::selectSheets('Sheet1')->load(public_path('uploads/excel/70.xls'), function ($reader) { $reader->take(10); }); $results = $orderExcel->toArray(); // dd($results); foreach ($results as $result) { //TODO //查询是否已经存在 //TODO 判断序号是否为null 不为null存入数据库 如果为null 查找子序号所指向序号是否存在 if ($result['序号'] != null) { $order = new Order(); $order->excel_id = (int) $result['序号']; $order->fw_number = $result['国外运单号']; $order->name = $result['姓名']; $order->mobile = $result['电话']; $order->address = $result['地址']; $order->zip_code = $result['邮编']; $order->weight = $result['重量']; $order->id_number = $result['身份证号']; // if(!$order->save()){ // return 'false'; // } //存入订单产品 $product = new OrderProduct(); $product->order_id = $order->id; $product->name = $result['品名']; $product->count = $result['数量']; //$product->save(); } else { var_dump((int) $result['子序号']); //存入子订单 $order = Order::where('excel_id', (int) $result['子序号'])->first(); //存入订单产品 $product = new OrderProduct(); $product->order_id = $order->id; $product->name = $result['品名']; $product->count = $result['数量']; //$product->save(); } } }
/** * @param Request $request */ private function checkFiles(Request $request) { $fileNameWithoutExt = str_random(32); $fileName = $fileNameWithoutExt . '.' . $request->file('file')->getClientOriginalExtension(); $directory = public_path() . '/resources/uploads/'; $request->file('file')->move($directory, $fileName); $zipper = new Zipper(); File::makeDirectory($directory . $fileNameWithoutExt); $zipper->make($directory . $fileName)->extractTo($directory . $fileNameWithoutExt); $createdProductCategories = []; $dataTransferResultErrors = ['productCategories' => array(), 'productLines' => array(), 'products' => array(), 'otherErrors' => array()]; $dataTransferResultWarnings = ['productCategories' => array(), 'productLines' => array(), 'products' => array()]; $findResults = File::glob($directory . $fileNameWithoutExt . '/img/'); if (count($findResults) == 0) { array_push($dataTransferResultErrors['otherErrors'], 'отсутствует папка с изображениями img'); } $findResults = File::glob($directory . $fileNameWithoutExt . '/products.xlsx'); if (count($findResults) == 0) { array_push($dataTransferResultErrors['otherErrors'], 'отсутствует файл Excel версии 2007 и выше. Убедитесь, что структура архива соотвествует образцу. Обратите внимание, что папка img и файл Excel находятся в корне архива, а не в папке, которая находится в корне архива'); } if (count($dataTransferResultErrors['otherErrors'])) { Session::put('dataTransferResult.Errors', $dataTransferResultErrors); Session::put('dataTransferResult.Warnings', $dataTransferResultWarnings); File::delete($directory . $fileName); File::deleteDirectory($directory . $fileNameWithoutExt); return; } Excel::selectSheets('Категории')->load($directory . $fileNameWithoutExt . '/products.xlsx', function ($reader) use($directory, $fileNameWithoutExt, $createdProductCategories, $dataTransferResultErrors, $dataTransferResultWarnings, $fileName, $request) { $productCategories = []; foreach ($reader->toArray() as $row) { if ($row['nomer'] == null) { continue; } array_push($productCategories, $row['nomer']); $imagePattern = '/img/product-category-' . $row['nomer']; $findResults = File::glob($directory . $fileNameWithoutExt . $imagePattern . '*'); if (count($findResults) == 0) { $dataTransferResultErrors['productCategories'][$row['nomer']] = 'У категории с номером ' . $row['nomer'] . ' отсутствует изображение: ' . $imagePattern; } if ($row['nomer'] <= ProductCategory::max('id')) { $dataTransferResultErrors['productCategories'][$row['nomer'] . ' дублирование данных (категория)'] = 'Категория с номером ' . $row['nomer'] . ' возможно уже присутствует в базe. Проверьте условие минимальности номера категории'; } } Excel::selectSheets('Линейки продукции')->load($directory . $fileNameWithoutExt . '/products.xlsx', function ($reader) use($directory, $fileNameWithoutExt, $createdProductCategories, $dataTransferResultErrors, $dataTransferResultWarnings, $fileName, $productCategories, $request) { $productLines = []; foreach ($reader->toArray() as $row) { if ($row['nomer'] == null) { continue; } array_push($productLines, $row['nomer']); if (!in_array($row['kategoriya'], $productCategories) && ProductCategory::find($row['kategoriya']) == null) { $dataTransferResultErrors['productLines'][$row['nomer'] . ' целостость данных (категория)'] = 'У линейки продукции указана несущестующая категория: ' . $row['kategoriya']; } $imagePattern = '/img/product-line-' . $row['nomer']; $findResults = File::glob($directory . $fileNameWithoutExt . $imagePattern . '*'); if (count($findResults) == 0) { $dataTransferResultErrors['productLines'][$row['nomer']] = 'У линейки продукции с номером ' . $row['nomer'] . ' отсутствует изображение: ' . $imagePattern; } if ($row['nomer'] <= ProductLine::max('id')) { $dataTransferResultErrors['productLines'][$row['nomer'] . ' дублирование данных (линейка продукции)'] = 'Линейка продукции с номером ' . $row['nomer'] . ' возможно уже присутствует в базe. Проверьте условие минимальности номера линейки продукции'; } } Excel::selectSheets('Продукция')->load($directory . $fileNameWithoutExt . '/products.xlsx', function ($reader) use($directory, $fileNameWithoutExt, $createdProductCategories, $dataTransferResultErrors, $dataTransferResultWarnings, $fileName, $productLines, $productCategories, $request) { foreach ($reader->toArray() as $row) { if ($row['nomer'] == null) { continue; } if ($row['kategoriya'] == null && $row['lineyka_produktsii'] == null) { $dataTransferResultErrors['products'][$row['nomer'] . ' целостость данных (нет привязки)'] = 'У продукции должна быть либо категория либо линейка продукции'; } if ($row['kategoriya'] != null && $row['lineyka_produktsii'] != null) { $dataTransferResultErrors['products'][$row['nomer'] . ' целостость данных (плохая привязка)'] = 'У продукции не может быть одновременно категории и линейка продукции'; } if ($row['kategoriya'] != null && !in_array($row['kategoriya'], $productCategories) && ProductCategory::find($row['kategoriya']) == null) { $dataTransferResultErrors['products'][$row['nomer'] . ' целостость данных (категория)'] = 'У продукции указана несущестующая категория: ' . $row['kategoriya']; } if ($row['lineyka_produktsii'] != null && !in_array($row['lineyka_produktsii'], $productLines) && ProductLine::find($row['lineyka_produktsii']) == null) { $dataTransferResultErrors['products'][$row['nomer'] . ' целостость данных (категория)'] = 'У продукции указана несущестующая категория: ' . $row['lineyka_produktsii']; } $imagePattern = '/img/product-' . $row['nomer']; $findResults = File::glob($directory . $fileNameWithoutExt . $imagePattern . '*'); if (count($findResults) == 0) { $dataTransferResultErrors['products'][$row['nomer']] = 'У продукции с номером ' . $row['nomer'] . ' отсутсвует основное изображение: ' . $imagePattern; } $imagePattern = '/img/product-' . $row['nomer'] . '-color-'; $findResults = File::glob($directory . $fileNameWithoutExt . $imagePattern . '*'); $notFoundProductColorImages = []; foreach ($findResults as $findResult) { $colorNumber = substr($findResult, strpos($findResult, 'color') + 6, strpos($findResult, '.') - strpos($findResult, 'color') - 6); $imagePattern = '/img/product-' . $row['nomer'] . '-image-' . $colorNumber; $findProductColorImageResults = File::glob($directory . $fileNameWithoutExt . $imagePattern . '*'); if (count($findProductColorImageResults) == 0) { array_push($notFoundProductColorImages, $imagePattern); } } if (count($notFoundProductColorImages) > 0) { $dataTransferResultWarnings['products'][$row['nomer'] . ' предупреждение об изображении для палитры'] = 'У продукции с номером ' . $row['nomer'] . ' отсутсвуют изображения продукта для цветовой палитры: '; foreach ($notFoundProductColorImages as $foundProductColorImage) { $dataTransferResultWarnings['products'][$row['nomer'] . ' предупреждение об изображении для палитры'] .= $foundProductColorImage . ', '; } } $imagePattern = '/img/product-' . $row['nomer'] . '-image-'; $findResults = File::glob($directory . $fileNameWithoutExt . $imagePattern . '*'); $notFoundProductColors = []; foreach ($findResults as $findResult) { $colorNumber = substr($findResult, strpos($findResult, 'image') + 6, strpos($findResult, '.') - strpos($findResult, 'color') - 6); $colorPattern = '/img/product-' . $row['nomer'] . '-color-' . $colorNumber; $findProductColorResults = File::glob($directory . $fileNameWithoutExt . $colorPattern . '*'); if (count($findProductColorResults) == 0) { array_push($notFoundProductColors, $colorPattern); } } if (count($notFoundProductColors) > 0) { $dataTransferResultWarnings['products'][$row['nomer'] . ' предупреждение о самом изображении палитры'] = 'У продукции с номером ' . $row['nomer'] . ' отсутсвуют изображения самой цветовой палитры: '; foreach ($notFoundProductColors as $notFoundProductColor) { $dataTransferResultWarnings['products'][$row['nomer'] . ' предупреждение о самом изображении палитры'] .= $notFoundProductColor . ', '; } } } Session::put('dataTransferResult.Errors', $dataTransferResultErrors); Session::put('dataTransferResult.Warnings', $dataTransferResultWarnings); if (count($dataTransferResultErrors['productCategories']) == 0 && count($dataTransferResultErrors['productLines']) == 0 && count($dataTransferResultErrors['products']) == 0) { Session::put('dataTransferResult.FilesPath', $directory . $fileNameWithoutExt); } else { File::delete($directory . $fileName); File::deleteDirectory($directory . $fileNameWithoutExt); } }); }); }); }