PHPExcel读取EXCEL中的图片并保存到本地

项目中需要读取php中图片保存到服务器同时将图片地址写入数据库,phpexcel示例代码如下:

<?php   
ini_set("display_errors",1);  
   
include 'PHPExcel.php';  
include 'PHPExcel/IOFactory.php';  
   
define('EXCEL_EXTENSION_2003', "xls");  
define('EXCEL_EXTENSION_2007', "xlsx");  
   
   
$fileName2003 = "file.xls";  
$fileName2007 = "file.xlsx";  
   
$fileName = $fileName2003;  
//$fileName = $fileName2007;  
   
if(getExtendFileName($fileName) == EXCEL_EXTENSION_2003)  
{  
    $reader = PHPExcel_IOFactory::createReader('Excel5');  
}  
else if(getExtendFileName($fileName) == EXCEL_EXTENSION_2007)  
{  
    $reader = new PHPExcel_Reader_Excel2007();  
}  

$PHPExcel = $reader->load($fileName);  
$worksheet = $PHPExcel->getActiveSheet();  
$imageInfo = extractImageFromWorksheet($worksheet,"savepath/");  

print_r($imageInfo);

/**
 * 检测文件类型
 *
 * @param      <type>  $file_name  The file name
 *
 * @return     <type>  The extend file name.
 */
function getExtendFileName($file_name) {  
    $extend = pathinfo($file_name);
    $extend = strtolower($extend["extension"]);
    return $extend;
}  

/**
 * 获取图片
 *
 * @param      <type>  $worksheet  The worksheet
 * @param      <type>  $basePath   The base path
 *
 * @return     array   ( description_of_the_return_value )
 */
function extractImageFromWorksheet($worksheet, $basePath){  
    $result = array();  
    $imageFileName = "";  
    foreach ($worksheet->getDrawingCollection() as $drawing) {  
        $xy=$drawing->getCoordinates();  
        $path = $basePath;  
        // for xlsx  
        if ($drawing instanceof PHPExcel_Worksheet_Drawing) {  
            $filename = $drawing->getPath();  
            $imageFileName = $drawing->getIndexedFilename();  
            $path = $path . $drawing->getIndexedFilename();  
            copy($filename, $path);  
            $result[$xy] = $path;  
        // for xls  
        } else if ($drawing instanceof PHPExcel_Worksheet_MemoryDrawing) {  
            $image = $drawing->getImageResource();  
            $renderingFunction = $drawing->getRenderingFunction();  
            switch ($renderingFunction) {  
                case PHPExcel_Worksheet_MemoryDrawing::RENDERING_JPEG:  
                    $imageFileName = $drawing->getIndexedFilename();  
                    $path = $path . $drawing->getIndexedFilename();  
                    imagejpeg($image, $path);  
                    break;  
                case PHPExcel_Worksheet_MemoryDrawing::RENDERING_GIF:  
                    $imageFileName = $drawing->getIndexedFilename();  
                    $path = $path . $drawing->getIndexedFilename();  
                    imagegif($image, $path);  
                    break;  
                case PHPExcel_Worksheet_MemoryDrawing::RENDERING_PNG:  
                    $imageFileName = $drawing->getIndexedFilename();  
                    $path = $path . $drawing->getIndexedFilename();  
                    imagegif($image, $path);  
                    break;
                case PHPExcel_Worksheet_MemoryDrawing::RENDERING_DEFAULT:  
                    $imageFileName = $drawing->getIndexedFilename();  
                    $path = $path . $drawing->getIndexedFilename();  
                    imagegif($image, $path);  
                    break;
            }
            $result[$xy] = $imageFileName;
        }
    }
    return $result;
}

Tags: 笔记

添加新评论