当前位置:首页 > 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.  
  13. try { 
  14.  
  15.  $inputFileName = './files/1.xlsx'; //包含图片的Excel文件 
  16.  
  17.  $objRead = IOFactory::createReader('Xlsx'); 
  18.  
  19.  $objSpreadsheet = $objRead->load($inputFileName); 
  20.  
  21.  $objWorksheet = $objSpreadsheet->getSheet(0); 
  22.  
  23.  $data = $objWorksheet->toArray(); 
  24.  
  25.  foreach ($objWorksheet->getDrawingCollection() as $drawing) { 
  26.  
  27.   list($startColumn, $startRow) = Coordinate::coordinateFromString($drawing->getCoordinates()); 
  28.  
  29.   $imageFileName = $drawing->getCoordinates() . mt_rand(1000, 9999); 
  30.  
  31.   switch ($drawing->getExtension()) { 
  32.  
  33.    case 'jpg': 
  34.  
  35.    case 'jpeg': 
  36.  
  37.     $imageFileName .= '.jpg'; 
  38.  
  39.     $source = imagecreatefromjpeg($drawing->getPath()); 
  40.  
  41.     imagejpeg($source, $imageFilePath . $imageFileName); 
  42.  
  43.     break; 
  44.  
  45.    case 'gif': 
  46.  
  47.     $imageFileName .= '.gif'; 
  48.  
  49.     $source = imagecreatefromgif($drawing->getPath()); 
  50.  
  51.     imagegif($source, $imageFilePath . $imageFileName); 
  52.  
  53.     break; 
  54.  
  55.    case 'png': 
  56.  
  57.     $imageFileName .= '.png'; 
  58.  
  59.     $source = imagecreatefrompng($drawing->getPath()); 
  60.  
  61.     imagepng($source, $imageFilePath, $imageFileName); 
  62.  
  63.     break; 
  64.  
  65.   } 
  66.  
  67.   $startColumn = ABC2decimal($startColumn); 
  68.  
  69.   $data[$startRow-1][$startColumn] = $imageFilePath . $imageFileName; 
  70.  
  71.  } 
  72.  
  73.  dump($data);die(); 
  74.  
  75. } catch (\Exception $e) { 
  76.  
  77.  throw $e; 
  78.  
  79. } 
  80.  
  81. public function ABC2decimal($abc) 
  82.  
  83. { 
  84.  
  85.  $ten = 0; 
  86.  
  87.  $len = strlen($abc); 
  88.  
  89.  for($i=1;$i<=$len;$i++){ 
  90.  
  91.   $char = substr($abc,0-$i,1);//反向获取单个字符 
  92.  
  93.   $int = ord($char); 
  94.  
  95.   $ten += ($int-65)*pow(26,$i-1); 
  96.  
  97.  } 
  98.  
  99.  return $ten; 
  100.  
  101. } 

结果如图:

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

Tags: php读取excel图片

分享到: