Maison > développement back-end > Problème PHP > Comment lire des images dans Excel avec PHP (avec code)

Comment lire des images dans Excel avec PHP (avec code)

angryTom
Libérer: 2023-02-28 16:50:01
avant
5635 Les gens l'ont consulté

Comment lire des images dans Excel avec PHP (avec code)

Aujourd'hui, j'ai reçu une demande de lecture d'images à partir d'Excel. J'ai recherché des informations sur Internet et j'ai essentiellement réalisé mes besoins. Cependant, comme certains des codes trouvés sont relativement anciens, ils s'y trouvent. are Certaines méthodes de bibliothèque ont été supprimées et n'existent plus, elles ne peuvent donc pas être directement transplantées dans votre propre projet et doivent être légèrement modifiées.

(Apprentissage recommandé : Tutoriel vidéo PHP)

Nous présentons ici comment utiliser phpspreadsheet et la bibliothèque d'extensions PHPExcel pour lire des images dans la fonction Excel. :

Comment lire des images dans Excel avec PHP (avec code)

PHPSpreadsheet

Installez d'abord phpspreadsheet Puisque la version PHP du serveur en ligne est PHP5.6, elle doit être installée pour. être compatible avec la version PHP5 .6, installez la version 1.8.2 ici

composer require phpoffice/phpspreadsheet=1.8.2
Copier après la connexion

et vous pourrez ensuite l'utiliser dans le projet

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;
}
Copier après la connexion

Vous pouvez voir que l'image est lue et enregistrée en local serveur

Comment lire des images dans Excel avec PHP (avec code)

PHPExcel

La méthode PHPExcel de lecture du contenu des fichiers Excel est presque la même que celle de phpspreadsheet Après tout, phpspreadsheet est écrit. sur la base de PHPExcel. Cependant, PHPExcel ayant été abandonné, il est recommandé d'utiliser d'abord phpspreadsheet. Si PHPExcel a été utilisé dans le projet d'origine, vous pouvez continuer à utiliser la méthode PHPExcel

use PHPExcel_IOFactory;
use PHPExcel_Cell;

try {
    $inputFileName = &#39;./files/1.xlsx&#39;;
    $inputFileType = PHPExcel_IOFactory::identify($inputFileName);
    $objReader = PHPExcel_IOFactory::createReader($inputFileType);
    $objPHPExcel = $objReader->load($inputFileName);
} catch (\Exception $e) {
    die(&#39;加载文件发生错误:"&#39;.pathinfo($inputFileName,PATHINFO_BASENAME).&#39;": &#39;.$e->getMessage());
}

$sheet = $objPHPExcel->getSheet(0);
$data = $sheet->toArray(); //该方法读取不到图片,图片需单独处理
$imageFilePath = &#39;./uploads/imgs/&#39;; //图片本地存储的路径
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(1000, 9999);
    switch($img->getExtension()) {
        case &#39;jpg&#39;:
        case &#39;jpeg&#39;:
            $imageFileName .= &#39;.jpeg&#39;;
            $source = imagecreatefromjpeg($img->getPath());
            imagejpeg($source, $imageFilePath.$imageFileName);
            break;
        case &#39;gif&#39;:
            $imageFileName .= &#39;.gif&#39;;
            $source = imagecreatefromgif($img->getPath());
            imagejpeg($source, $imageFilePath.$imageFileName);
            break;
        case &#39;png&#39;:
            $imageFileName .= &#39;.png&#39;;
            $source = imagecreatefrompng($img->getPath());
            imagejpeg($source, $imageFilePath.$imageFileName);
            break;
    }
    $startColumn = ABC2decimal($startColumn);
    $data[$startRow-1][$startColumn] = $imageFilePath . $imageFileName;

}
var_dump($data);

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;
}
Copier après la connexion

Cet article provient de. le site Web php chinois, problème php colonne, bienvenue pour apprendre !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
php
source:cnblogs.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal