tp5中匯入帶圖片的excel表格資料
控制器裡:
/**
* 訂單匯入(excel匯入)
*/
public function import()
{
if(request()->isPost()){
if (!empty($_FILES)){
import('PHPExcel.PHPExcel', EXTEND_PATH);
$PHPExcel = new \PHPExcel();
$file = request()->file('order');
if($file){
//var_dump($file);die;
$info = $file->move(ROOT_PATH . 'Uploads' . DS . 'Excel');
if($info){
$exclePath = $info->getSaveName(); //獲取檔名
$file_name = ROOT_PATH . 'Uploads' . DS . 'Excel' . DS . $exclePath; //上傳檔案的地址
$extension = strtolower( pathinfo($file_name, PATHINFO_EXTENSION));
if($extension =='xlsx'){
$objReader =\PHPExcel_IOFactory::createReader('Excel2007');
}else if($extension =='xls'){
$objReader = \PHPExcel_IOFactory::createReader('Excel5');
}
$obj_PHPExcel =$objReader->load($file_name, $encode = 'utf-8'); //載入檔案內容,編碼utf-8
$a = $obj_PHPExcel->getsheet(0);
$imgData=array();
$imageFilePath='public/goods/';//圖片儲存目錄
foreach($a->getDrawingCollection() as $img){
list ($startColumn, $startRow) = \PHPExcel_Cell::coordinateFromString($img->getCoordinates());//獲取列與行號
$imageFileName=date('Ymd').$startRow.mt_rand(100,999);
/*表格解析後圖片會以資源形式儲存在物件中,可以通過getImageResource函式直接獲取圖片資源然後寫入本地檔案中*/
switch ($img->getMimeType()){//處理圖片格式
case 'image/jpg':
case 'image/jpeg':
$imageFileName.='.jpg';
imagejpeg($img->getImageResource(),$imageFilePath.$imageFileName);
break;
case 'image/gif':
$imageFileName.='.gif';
imagegif($img->getImageResource(),$imageFilePath.$imageFileName);
break;
case 'image/png':
$imageFileName.='.png';
imagepng($img->getImageResource(),$imageFilePath.$imageFileName);
break;
}
$tb_data[$startRow-2]['to_image']=$imageFileName;//追加到陣列中去
}
// var_dump($imgData);die;
$excel_array=$obj_PHPExcel->getsheet(0)->toArray(); //轉換為陣列格式
array_shift($excel_array); //刪除第一個陣列(標題);
$i=0;
// var_dump($excel_array);die;
foreach($excel_array as $k=>$v) {
// $tb_data = [];
$tb_data[$k]['to_order_id'] = $v[0];
$tb_data[$k]['to_buyer_name'] = $v[1];
$tb_data[$k]['to_buy_time'] = $v[2];
$tb_data[$k]['to_pay_time'] = $v[3];
$tb_data[$k]['to_address'] = $v[4];
$tb_data[$k]['to_name'] = $v[5];
$tb_data[$k]['to_phone'] = $v[6];
$tb_data[$k]['to_tel'] = $v[7];
$tb_data[$k]['to_province'] = $v[8];
$tb_data[$k]['to_city'] = $v[9];
$tb_data[$k]['to_area'] = $v[10];
$tb_data[$k]['to_message'] = $v[11];
$tb_data[$k]['to_remark'] = $v[12];
$tb_data[$k]['to_sub_id'] = $v[13];
$tb_data[$k]['to_goods_name'] = $v[15];
$tb_data[$k]['to_code'] = $v[16];
$tb_data[$k]['to_sku'] = $v[17];
$tb_data[$k]['to_color_size'] = $v[18];
$tb_data[$k]['to_number'] = $v[19];
$tb_data[$k]['to_create'] = time();
$tb_data[$k]['to_modified'] = time();
//入庫(淘寶訂單)
$res = Db::table('kjds_tb_order')->insertGetId($tb_data[$k]);
$this->checkGoods($tb_data[$k],$res);
}
if($res){
$this->success("匯入成功");
}else{
$this->error("匯入失敗");
}
}else{
$this->error("檔案上傳失敗");
}
}else{
$this->success("未上傳檔案");
}
}else{
$this->success("未上傳檔案");
}
}else{
$this->success("未上傳檔案");
}
}