首页 > 其他分享 >excel 图片上传

excel 图片上传

时间:2023-02-02 10:35:06浏览次数:36  
标签:sheet img imageFilePath excel startColumn 上传 imageFileName 图片

1.下载PHPEXCEL拓展包:https://codeload.github.com/PHPOffice/PHPExcel/zip/1.8

 

 2.PHP文件

<?php
header("content-type:text/html;charset=utf8");
include './Classes/PHPExcel/IOFactory.php';//引入PHPExcel类
$inputFileName = './test.xls';//读取的excel文件
date_default_timezone_set('PRC');
// 读取excel文件
try {
    $inputFileType = PHPExcel_IOFactory::identify($inputFileName);
    $objReader = PHPExcel_IOFactory::createReader($inputFileType);
    $objPHPExcel = $objReader->load($inputFileName);
} catch(Exception $e) {
    die('加载文件发生错误:"'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage());
}
$sheet = $objPHPExcel->getSheet(0);
$data=$sheet->toArray();//该方法读取不到图片 图片需单独处理
$imageFilePath='./images/'.date('Y-m-d').'/';//图片在本地存储的路径
if (! file_exists ( $imageFilePath )) {
    mkdir("$imageFilePath", 0777, true);
}
//处理图片
foreach($sheet->getDrawingCollection() as $img) {
    list($startColumn,$startRow)= PHPExcel_Cell::coordinateFromString($img->getCoordinates());//获取图片所在行和列
    $imageFileName = $img->getCoordinates() . mt_rand(100, 999);

    switch($img->getExtension()) {
        case 'jpg':
            $imageFileName.='.jpg';
            imagejpeg(imagecreatefromjpeg($img->getPath()),$imageFilePath.$imageFileName);
            break;
        case 'gif':
            $imageFileName.='.gif';
            imagegif(imagecreatefromgif($img->getPath()),$imageFilePath.$imageFileName);
            break;
        case 'png':
            $imageFileName.='.png';
            imagepng(imagecreatefrompng($img->getPath()),$imageFilePath.$imageFileName);
            break;
    }
    $startColumn = ABC2decimal($startColumn);//由于图片所在位置的列号为字母,转化为数字
    $data[$startRow-1][$startColumn]=$imageFilePath.$imageFileName;//把图片插入到数组中

}


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;
}

//以上代码只是处理图片,得到图片路径插入到数组中,如需数据入库,可循环insert,自行处理,打印结果如下:
print_r($data);die;

结果

 

 图片

 

 如需插入数据库 可依次插入

标签:sheet,img,imageFilePath,excel,startColumn,上传,imageFileName,图片
From: https://www.cnblogs.com/junwuxiao/p/17085134.html

相关文章