图片excel"/>
php读取带图片excel
composer require phpoffice/phpspreadsheet=1.8.2
支持单元格一个图片,多个图片在一个单元格会覆盖
use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
use PhpOffice\PhpSpreadsheet\IOFactory;$imageFilePath = './uploads/imgs/'; //图片本地存储的路径
if (!file_exists($imageFilePath)) { //如果目录不存在则递归创建mkdir($imageFilePath, 0777, true);
}try {$inputFileName = './files/1.xlsx'; //包含图片的Excel文件$objRead = IOFactory::createReader('Xlsx');$objSpreadsheet = $objRead->load($inputFileName);$objWorksheet = $objSpreadsheet->getSheet(0);$data = $objWorksheet->toArray();foreach ($objWorksheet->getDrawingCollection() as $drawing) {list($startColumn, $startRow) = Coordinate::coordinateFromString($drawing->getCoordinates());$imageFileName = $drawing->getCoordinates() . mt_rand(1000, 9999);switch ($drawing->getExtension()) {case 'jpg':case 'jpeg':$imageFileName .= '.jpg';$source = imagecreatefromjpeg($drawing->getPath());imagejpeg($source, $imageFilePath . $imageFileName);break;case 'gif':$imageFileName .= '.gif';$source = imagecreatefromgif($drawing->getPath());imagegif($source, $imageFilePath . $imageFileName);break;case 'png':$imageFileName .= '.png';$source = imagecreatefrompng($drawing->getPath());imagepng($source, $imageFilePath, $imageFileName);break;}$startColumn = ABC2decimal($startColumn);$data[$startRow-1][$startColumn] = $imageFilePath . $imageFileName;}dump($data);die();
} catch (\Exception $e) {throw $e;
}public 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;
}
支持一个单元格多个图片
use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
use PhpOffice\PhpSpreadsheet\IOFactory;$imageFilePath = './uploads/imgs/'; //图片本地存储的路径
if (!file_exists($imageFilePath)) { //如果目录不存在则递归创建mkdir($imageFilePath, 0777, true);
}try {$inputFileName = './files/1.xlsx'; //包含图片的Excel文件$objRead = IOFactory::createReader('Xlsx');$objSpreadsheet = $objRead->load($inputFileName);$objWorksheet = $objSpreadsheet->getSheet(0);$data = $objWorksheet->toArray();foreach ($objWorksheet->getDrawingCollection() as $drawing) {list($startColumn, $startRow) = Coordinate::coordinateFromString($drawing->getCoordinates());$imageFileName = $drawing->getCoordinates() . mt_rand(1000, 9999);switch ($drawing->getExtension()) {case 'jpg':case 'jpeg':$imageFileName .= '.jpg';$source = imagecreatefromjpeg($drawing->getPath());imagejpeg($source, $imageFilePath . $imageFileName);break;case 'gif':$imageFileName .= '.gif';$source = imagecreatefromgif($drawing->getPath());imagegif($source, $imageFilePath . $imageFileName);break;case 'png':$imageFileName .= '.png';$source = imagecreatefrompng($drawing->getPath());imagepng($source, $imageFilePath, $imageFileName);break;}$startColumn = ABC2decimal($startColumn);$data[$startRow-1][$startColumn][] = $imageFilePath . $imageFileName;//$startColumn = $this->bb10($startColumn);//$data[$startRow-1][$startColumn-1][] = $imageFilePath . $imageFileName;}dump($data);die();
} catch (\Exception $e) {throw $e;
}public 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;
}
//26进制转换
function bb10($cc)
{$len = strlen($cc);$res = 0;for($i=0,$j=1;$i<$len;$i++,$j*=26){$res +=(int)(ord($cc[$len-$i-1])-64)*$j;}return $res;
}
//26进制转换
function bb10($cc)
{$len = strlen($cc);$res = 0;for($i=0,$j=1;$i<$len;$i++,$j*=26){$res +=(int)(ord($cc[$len-$i-1])-64)*$j;}echo $res;
}
function aa26($index)
{$res = "";while($index>0){$i = $index%26;if($i==0)$i=26;$res.=chr($i+64);$index=($index-$i)/26;}echo strrev($res);
}
aa26(703);
bb10("AAA");
更多推荐
php读取带图片excel
发布评论