导入的数据模板:
PHP框架:TP5
PHP代码的实现:
/**
* 导入带有图片的excel文件
* @param $file_path 文件路径
* @param $startrow 数据行数
* @param $path 写入文件路径
* @return array
* @throws PHPExcel_Exception
* @throws PHPExcel_Reader_Exception
* 注意点:
* 1. 文件后缀 **.xls。
* 2. 文件中的图片必须设置为浮动状态
*/
function extimppics($file_path,$startrow=1)
{
require_once dirname(__DIR__) . '/extend/phpexcel/Classes/PHPExcel.php';
ini_set ("memory_limit", "-1") ;
//图片配置******************
//设置一个存放图片的路径
$path = dirname(__DIR__) . '/public/excel';
$imgPath = $path . "/images/";
if(!file_exists($imgPath)){
mkdir($imgPath);
}
$spreadsheet= \PHPExcel_IOFactory::load($file_path);
$sheet=$spreadsheet->getActiveSheet();
$data=[];
foreach ($sheet->getRowIterator() as $row){
$rowIndex=$row->getRowIndex();
if($rowIndex===1){
continue;
}
$cellIterator=$row->getCellIterator();
$row=[];
foreach ($cellIterator as $cell){
$row[]=$cell->getValue();
}
$data[]=$row;
}
//遍历表格图片
foreach ($sheet->getDrawingCollection() as $drawing) {
list($startColumn,$startRow)= \PHPExcel_Cell::coordinateFromString($drawing->getCoordinates());
$startRow = $startRow - $startrow;
$extension = strtolower($drawing->getMimeType());
$extension = explode('/', $extension);
$extension = $extension[1];
$filename = $data[$startRow][4]."_".$startRow."_".$startColumn.".".$extension; //文件名
ob_start();
call_user_func(
$drawing->getRenderingFunction(),
$drawing->getImageResource()
);
$imageContents = ob_get_contents();
file_put_contents($imgPath.$filename,$imageContents); //把图片保存到本地(上方自定义的路径)
ob_end_clean();
$startColumn = ABC2decimal($startColumn);//由于图片所在位置的列号为字母,转化为数字
$data[$startRow][$startColumn]=$filename;//把图片插入到数组中
}
ksort($data);
halt($data);
return $data;
}
function ABC2decimal($abc){
$ten = 0;
$len = strlen($abc);
for($i=1;$i<=$len;$i++){
$char = substr($abc,0-$i,1);//反向获取单个字符
$int = ord($char);
$ten += ($int-65)*pow(26,$i-1);
}
return $ten;
}
导入结果: