当前位置:首页 > PHP教程 > php图像处理 > 列表

利用php实现读取excel中的图片

发布:smiling 来源: PHP粉丝网  添加日期:2022-05-25 10:56:54 浏览: 评论:0 

要实现读取excel中的图片,可以通过phpspreadsheet来实现。phpspreadsheet是一个纯php编写的库,并引入了命名空间、PSR规范等。

使用composer安装phpspreadsheet

composer require phpoffice/phpspreadsheet

GitHub下载:

https://github.com/PHPOffice/PhpSpreadsheet

excel图片如下图:

7ead23da258f75fdf3cbfce2f8b7bd8.png

项目实例:

  1. use PhpOffice\PhpSpreadsheet\Cell\Coordinate; 
  2.  
  3. use PhpOffice\PhpSpreadsheet\IOFactory; 
  4.  
  5. $imageFilePath = './uploads/imgs/'//图片本地存储的路径 
  6.  
  7. if (!file_exists($imageFilePath)) { //如果目录不存在则递归创建 
  8.  
  9.  mkdir($imageFilePath, 0777, true); 
  10.  
  11.  
  12. try { 
  13.  
  14.  $inputFileName = './files/1.xlsx'//包含图片的Excel文件 
  15.  
  16.  $objRead = IOFactory::createReader('Xlsx'); 
  17.  
  18.  $objSpreadsheet = $objRead->load($inputFileName); 
  19.  
  20.  $objWorksheet = $objSpreadsheet->getSheet(0); 
  21.  
  22.  $data = $objWorksheet->toArray(); 
  23.  
  24.  foreach ($objWorksheet->getDrawingCollection() as $drawing) { 
  25.  
  26.   list($startColumn$startRow) = Coordinate::coordinateFromString($drawing->getCoordinates()); 
  27.  
  28.   $imageFileName = $drawing->getCoordinates() . mt_rand(1000, 9999); 
  29.  
  30.   switch ($drawing->getExtension()) { 
  31.  
  32.    case 'jpg'
  33.  
  34.    case 'jpeg'
  35.  
  36.     $imageFileName .= '.jpg'
  37.  
  38.     $source = imagecreatefromjpeg($drawing->getPath()); 
  39.  
  40.     imagejpeg($source$imageFilePath . $imageFileName); 
  41.  
  42.     break
  43.  
  44.    case 'gif'
  45.  
  46.     $imageFileName .= '.gif'
  47.  
  48.     $source = imagecreatefromgif($drawing->getPath()); 
  49.  
  50.     imagegif($source$imageFilePath . $imageFileName); 
  51.  
  52.     break
  53.  
  54.    case 'png'
  55.  
  56.     $imageFileName .= '.png'
  57.  
  58.     $source = imagecreatefrompng($drawing->getPath()); 
  59.  
  60.     imagepng($source$imageFilePath$imageFileName); 
  61.  
  62.     break
  63.  
  64.   } 
  65.  
  66.   $startColumn = ABC2decimal($startColumn); 
  67.  
  68.   $data[$startRow-1][$startColumn] = $imageFilePath . $imageFileName
  69.  
  70.  } 
  71.  
  72.  dump($data);die(); 
  73.  
  74. } catch (\Exception $e) { 
  75.  
  76.  throw $e
  77.  
  78.  
  79. public function ABC2decimal($abc
  80.  
  81.  
  82.  $ten = 0; 
  83.  
  84.  $len = strlen($abc); 
  85.  
  86.  for($i=1;$i<=$len;$i++){ 
  87.  
  88.   $char = substr($abc,0-$i,1);//反向获取单个字符 
  89.  
  90.   $int = ord($char); 
  91.  
  92.   $ten += ($int-65)*pow(26,$i-1); 
  93.  
  94.  } 
  95.  
  96.  return $ten
  97.  

结果如图:

利用php实现读取excel中的图片

Tags: php读取excel图片

分享到: