国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

PHP中excel帶圖片數(shù)據(jù)導入

這篇具有很好參考價值的文章主要介紹了PHP中excel帶圖片數(shù)據(jù)導入。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前提:有個需求需要實現(xiàn)帶圖片的excel數(shù)據(jù)導入數(shù)據(jù)庫中,發(fā)現(xiàn)PHPExcel - Excel 操作庫已經(jīng)停止維護,在PHP8的版本中,有些語法不支持,報錯一堆,改了一堆,又還有一堆。所以決定找個替代的擴展:phpoffice/phpspreadsheet

技術背景前提:

  1. ThinkPHP8.0
  2. php8.0.2nts
  3. “phpoffice/phpspreadsheet”: “^1.20.0”

在composer.json中加入"phpoffice/phpspreadsheet": "^1.20.0"composer update,如果選擇的phpoffice/phpspreadsheet版本不同,可能又有不同的坑存在,得進行一一排查。這里記錄下。

實現(xiàn)步驟看代碼注釋部分,實現(xiàn)代碼如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-790304.html

    /**
     * 字母序列化為數(shù)字
     */
    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;
    }


    public function excel()
    {
        if ($file = request()->file('excel')) {
            try {
                $saveName = Filesystem::disk('public')->putFile('/static/upload/excels', $file);
                if (!is_file($saveName)) {
                    return json(['code' => 1, 'msg' => '文件不存在', 'data' => null]);
                }
                $ext = pathinfo($saveName, PATHINFO_EXTENSION);
                // xls不支持圖片導入
                // if (!in_array($ext, ['xlsx', 'xls'])) {
                if (!in_array($ext, ['xlsx'])) {
                    return json(['code' => 1, 'msg' => '文件類型不正確', 'data' => null]);
                }
                // 有兩種格式,xlsx和xls
                if ($ext == 'xlsx') {
                    $objReader = IOFactory::createReader('Xlsx');
                } else {
                    $objReader = IOFactory::createReader('Xls');
                }
                // 圖片保存路徑
                $imageFilePath1 = root_path() . '/public/'; // 圖片保存目錄
                $imageFilePath2 = 'static/upload/images/' . date("Ymd") . '/';
                $imageFilePath = $imageFilePath1 . $imageFilePath2;
                if (!file_exists($imageFilePath)) {
                    mkdir("$imageFilePath", 0777, true);
                }
                // 載入excel文件
                $excel = $objReader->load($saveName);
                // 讀取第一張表
                $sheet = $excel->getActiveSheet();
                // 讀取總行數(shù)
                $highestRow = $sheet->getHighestRow();
                // 讀取第一張表轉(zhuǎn)換成數(shù)組
                $data = $sheet->toArray();

                // 處理圖片
                foreach ($sheet->getDrawingCollection() as $drawing) {
                    list($startColumn, $startRow) = Coordinate::coordinateFromString($drawing->getCoordinates());
                    $imageFileName = $drawing->getIndexedFilename();  // 獲取文件名
                    switch ($drawing->getExtension()) {
                        case 'jpg':
                        case 'jpeg':
                            $source = imagecreatefromjpeg($drawing->getPath());
                            imagejpeg($source, $imageFilePath . $imageFileName);
                            break;
                        case 'gif':
                            $source = imagecreatefromgif($drawing->getPath());
                            imagegif($source, $imageFilePath . $imageFileName);
                            break;
                        case 'png':
                            $source = imagecreatefrompng($drawing->getPath());
                            imagepng($source, $imageFilePath . $imageFileName);
                            break;
                    }
                    $startColumn = $this->ABC2decimal($startColumn);
                    $data[$startRow - 1][$startColumn] = $imageFilePath2 . $imageFileName;
                }

                // 數(shù)據(jù)寫入數(shù)據(jù)庫
                $add_data = [];
                for ($i = 1; $i <= $highestRow - 1; $i++) {
                    $add_data[$i]['institution'] = $data[$i][0];
                    $add_data[$i]['name'] = $data[$i][1];
                    $add_data[$i]['sex'] = $data[$i][2];
                    $add_data[$i]['phone'] = $data[$i][3];
                    $add_data[$i]['id_type'] = $data[$i][4];
                    $add_data[$i]['id_no'] = $data[$i][5];
                    $add_data[$i]['occupation'] = $data[$i][6];
                    $add_data[$i]['job'] = $data[$i][7];
                    $add_data[$i]['skill_level'] = $data[$i][8];
                    $add_data[$i]['certificate_no'] = $data[$i][9];
                    $add_data[$i]['create_time'] = $data[$i][10];
                    $add_data[$i]['start_time'] = $data[$i][11];
                    $add_data[$i]['end_time'] = $data[$i][12];
                    $add_data[$i]['path'] = $data[$i][13];
                }

                // 數(shù)據(jù)插入數(shù)據(jù)庫
                $success_count = Db::table('certificate')->insertAll($add_data);
                if ($success_count > 0) {
                    return json(['code' => 0, 'msg' => '數(shù)據(jù)插入成功', 'data' => null]);
                } else {
                    return json(['code' => 1, 'msg' => '數(shù)據(jù)插入失敗', 'data' => null]);
                }
            } catch (\Exception $e) {
                return json(['code' => 1, 'msg' => $e->getMessage(), 'data' => null]);
            }
        } else {
            return json(['code' => 1, 'msg' => '上傳文件不能為空', 'data' => null]);
        }
    }

到了這里,關于PHP中excel帶圖片數(shù)據(jù)導入的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Excel電子表格的PHP類庫:PHP_XLSXWriter(大數(shù)據(jù)量報表、后臺運行、瀏覽器下載)

    Excel電子表格的PHP類庫:PHP_XLSXWriter(大數(shù)據(jù)量報表、后臺運行、瀏覽器下載)

    PHP_XLSXWriter 是一個用于生成 Microsoft Excel 2007+ xlsx 文件的 PHP 庫。XLSX 是一種用基于 XML 的開放式文件標準存儲電子表格數(shù)據(jù)的格式,用于 Excel 2007 及更高版。PHP_XLSXWriter 庫提供簡單的 API,用于將 PHP 數(shù)組中的數(shù)據(jù)寫入 XLSX 文件。它可以寫入包含多個工作表(worksheet)和大量數(shù)據(jù)的

    2024年02月08日
    瀏覽(20)
  • 短視頻矩陣系統(tǒng)源碼開發(fā)搭建技術解析-PHP語言

    短視頻矩陣系統(tǒng)源碼開發(fā)搭建技術解析-PHP語言

    一、系統(tǒng)架構 整個短視頻矩陣系統(tǒng)大概分為以下幾個模塊: 1.多平臺賬號管理 支持抖音、快手、小紅書、西瓜、頭條視頻號等多平臺賬號管理。 2.視頻管理模塊 支持視頻批量上傳、批量剪輯、文字轉(zhuǎn)語音,特效等功能配置 3.推薦算法模塊 推薦算法模塊主要用來推薦用戶感興

    2024年02月07日
    瀏覽(30)
  • 【PHP圖片托管】CFimagehost搭建私人圖床 - 無需數(shù)據(jù)庫支持

    【PHP圖片托管】CFimagehost搭建私人圖床 - 無需數(shù)據(jù)庫支持

    圖片服務器也稱作圖床,可以說是互聯(lián)網(wǎng)存儲中最重要的應用之一,不僅網(wǎng)站需要圖床提供的外鏈調(diào)取圖片,個人或企業(yè)也用圖床存儲各種圖片,方便隨時訪問查看。不過由于圖床很不掙錢,各互聯(lián)網(wǎng)大廠正在逐步關停所屬的圖床服務器,這也導致用戶只能自己想辦法,搭建

    2024年02月07日
    瀏覽(13)
  • R語言 導入Excel數(shù)據(jù)

    R語言 導入Excel數(shù)據(jù) 在R語言中,導入Excel數(shù)據(jù)是一項常見的任務。R提供了多種方法來實現(xiàn)這一目標,包括使用各種包和函數(shù)。下面將介紹幾種常用的方法。 使用readxl包 readxl包是一個專門用于讀取Excel文件的R包。要使用readxl包,首先需要安裝它??梢允褂靡韵旅畎惭breadxl包

    2024年02月06日
    瀏覽(25)
  • 使用CFimagehost源碼自建無需數(shù)據(jù)庫支持的PHP圖片托管服務

    使用CFimagehost源碼自建無需數(shù)據(jù)庫支持的PHP圖片托管服務

    圖片服務器也稱作圖床,可以說是互聯(lián)網(wǎng)存儲中最重要的應用之一,不僅網(wǎng)站需要圖床提供的外鏈調(diào)取圖片,個人或企業(yè)也用圖床存儲各種圖片,方便隨時訪問查看。不過由于圖床很不掙錢,各互聯(lián)網(wǎng)大廠正在逐步關停所屬的圖床服務器,這也導致用戶只能自己想辦法,搭建

    2024年02月04日
    瀏覽(22)
  • 使用CFimagehost源碼搭建免費的PHP圖片托管私人圖床,無需數(shù)據(jù)庫支持

    使用CFimagehost源碼搭建免費的PHP圖片托管私人圖床,無需數(shù)據(jù)庫支持

    圖片服務器也稱作圖床,可以說是互聯(lián)網(wǎng)存儲中最重要的應用之一,不僅網(wǎng)站需要圖床提供的外鏈調(diào)取圖片,個人或企業(yè)也用圖床存儲各種圖片,方便隨時訪問查看。不過由于圖床很不掙錢,各互聯(lián)網(wǎng)大廠正在逐步關停所屬的圖床服務器,這也導致用戶只能自己想辦法,搭建

    2024年02月07日
    瀏覽(21)
  • 使用CFimagehost源碼搭建無需數(shù)據(jù)庫支持的PHP免費圖片托管私人圖床

    使用CFimagehost源碼搭建無需數(shù)據(jù)庫支持的PHP免費圖片托管私人圖床

    圖片服務器也稱作圖床,可以說是互聯(lián)網(wǎng)存儲中最重要的應用之一,不僅網(wǎng)站需要圖床提供的外鏈調(diào)取圖片,個人或企業(yè)也用圖床存儲各種圖片,方便隨時訪問查看。不過由于圖床很不掙錢,各互聯(lián)網(wǎng)大廠正在逐步關停所屬的圖床服務器,這也導致用戶只能自己想辦法,搭建

    2024年02月08日
    瀏覽(19)
  • DIY私人圖床:使用CFimagehost源碼自建無需數(shù)據(jù)庫支持的PHP圖片托管服務

    DIY私人圖床:使用CFimagehost源碼自建無需數(shù)據(jù)庫支持的PHP圖片托管服務

    最近,我發(fā)現(xiàn)了一個超級強大的人工智能學習網(wǎng)站。它以通俗易懂的方式呈現(xiàn)復雜的概念,而且內(nèi)容風趣幽默。我覺得它對大家可能會有所幫助,所以我在此分享。點擊這里跳轉(zhuǎn)到網(wǎng)站。 圖片服務器也稱作圖床,可以說是互聯(lián)網(wǎng)存儲中最重要的應用之一,不僅網(wǎng)站需要圖床提

    2024年02月08日
    瀏覽(22)
  • 【PHP語言-PDO接口】PDO接口執(zhí)行腳本操作數(shù)據(jù)庫

    【PHP語言-PDO接口】PDO接口執(zhí)行腳本操作數(shù)據(jù)庫

    目錄 前言: 一、 PDO簡介 二、 PDO對象方法 三、實戰(zhàn)中心 PDO:數(shù)據(jù)庫抽象層 簡介:PDO擴展為PHP訪問數(shù)據(jù)庫定義了一個輕量級的、一致性的接口,PDO解決了數(shù)據(jù)庫連接不統(tǒng)一的問題。 1、PDO簡介 (1)PHP的PDO(PHP Data Objects)是一種用于在PHP中訪問數(shù)據(jù)庫的擴展。它提供了一個統(tǒng)

    2024年02月13日
    瀏覽(20)
  • poi實現(xiàn)excel文件導入導出(基本數(shù)據(jù)導出、含格式導出、含批注導出、含圖片圖表導出)——springboot

    poi實現(xiàn)excel文件導入導出(基本數(shù)據(jù)導出、含格式導出、含批注導出、含圖片圖表導出)——springboot

    本文主要是介紹springboot + poi實現(xiàn)基本的excel文件導入導出,包含數(shù)據(jù)導出導入時數(shù)據(jù)的其他需求校驗,導出含有批注信息、導出含有圖片信息、導出含有圖表信息等的介紹等等,主要是一個demo盡可能簡單明了的來介紹相關功能即可。有什么問題可以在留言哦!并在文章末尾附

    2024年02月08日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包