public function import_excel(){
$file = request()->file('file');
$info = $file->validate(['ext'=>'xlsx,xls'])->move('file','impexc');
$filePath='file/'.$info->getSaveName();
if($info){
$PHPExcel=new \PHPExcel();
$PHPReader = new \PHPExcel_Reader_Excel5();
if(strpos($filePath,'xlsx') !== false){
$PHPReader = new \PHPExcel_Reader_Excel2007();
}
$PHPExcel = $PHPReader->load($filePath);
$drawings = $PHPExcel->getActiveSheet()->getDrawingCollection(); //得到图片数据的集合
$img_arr=array(); //图片文件路径数组
$i = 0;
//图片读取的顺序根据excel设置的层次来的!!!
foreach($drawings as $drawing) {
if ($drawing instanceof \PHPExcel_Worksheet_MemoryDrawing) {
ob_start();
call_user_func(
$drawing->getRenderingFunction(),
$drawing->getImageResource()
);
$imageContents = ob_get_contents();
ob_end_clean();
switch ($drawing->getMimeType()) {
case \PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_PNG :
$extension = 'png';
break;
case \PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_GIF:
$extension = 'gif';
break;
case \PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_JPEG :
$extension = 'jpg';
break;
}
} else {
$zipReader=fopen($drawing->getPath(), 'r');
$imageContents='';
while (!feof($zipReader)) {
$imageContents.=fread($zipReader, 1024);
}
fclose($zipReader);
$extension = $drawing->getExtension();
}
$image_name='file/upload/inventory/image_'.$i.'_'.time().'.'.$extension;
array_push($img_arr,$image_name);
$i++;
//生成图片文件
file_put_contents($image_name,$imageContents);
}
/**读取excel文件中的第一个工作表*/
$currentSheet = $PHPExcel->getSheet(0);
/**取得最大的列号*/
$allColumn = 'C';//$currentSheet->getHighestColumn();
/**取得一共有多少行*/
$allRow = $currentSheet->getHighestRow();
/**从第二行开始输出,因为excel表中第一行为列名*/
$insertsql='INSERT INTO amp_inventory (name,quantity,imgs,create_time) values ';//
$lattersql='';
for($currentRow = 2;$currentRow <= $allRow;$currentRow++) {
$lattersql.='(';
/**从第A列开始输出*/
for ($currentColumn = 'A'; $currentColumn <= $allColumn; $currentColumn++) {
$val = $currentSheet->getCellByColumnAndRow(ord($currentColumn) - 65, $currentRow)->getValue();
if ($currentColumn == 'A') {
$lattersql.="'".$val."'";
}
else if($currentColumn == 'C'){
$lattersql.=",'".$img_arr[$currentRow-2]."'";
}
else{
$lattersql.=",'".$val."'";
}
}
if($allRow==$currentRow){
$lattersql.=',now())';
}else{
$lattersql.=',now()),';
}
}
$insertsql=$insertsql.$lattersql;
$sat=Db::query($insertsql);
return ['msg'=>'上传成功','path'=>$filePath];
}else{
// 上传失败获取错误信息
return $file->getError();
}
}