Python讀取excel中的圖片

      網(wǎng)友投稿 1560 2022-05-30

      Python讀取excel中的圖片

      一、讀取excel文件

      我們先來(lái)看看如何讀取excel文件,讀取excel文件的方式很多。這里選擇openpyxl模塊,安裝語(yǔ)句如下:

      pip install openpyxl

      1

      我們還需要用到一些其它模塊,具體如下:

      pip install pyzbar pip install pillow pip install numpy

      1

      2

      3

      下面我們就可以開始操作了。

      在Excel中,有工作簿、表、單元等。這里簡(jiǎn)單說(shuō)一下,工作簿就是一個(gè)excel文件,表的話就是我們excel左下角切換的sheet1、sheet2,單元就是一個(gè)格子。下面我們來(lái)讀取一個(gè)excel文件:

      from openpyxl import load_workbook # 加載excel wb = load_workbook("111.xlsx") # 切換到第一張表 ws = wb[wb.sheetnames[0]] # 獲取A3單元 cell = ws['A3'] # 輸出A3單元的值 print(cell.value)

      1

      2

      3

      4

      Python讀取excel中的圖片

      5

      6

      7

      8

      9

      openpyxl的更多操作可以看看官方的文檔https://openpyxl.readthedocs.io/en/stable/tutorial.html。

      二、讀取excel中的圖片

      讀取excel中的圖片有多種方式,本文會(huì)分享兩種方式。

      (1)使用zipfile模塊

      excel本身是一個(gè)壓縮文件,我們把excel的后綴改成zip后,手動(dòng)解壓就會(huì)看到在xl/media目錄下有一些圖片文件,這些圖片就是excel種插入的圖片。因此我們就可以通過(guò)解壓的方式讀取excel種的圖片,具體代碼如下:

      import os from zipfile import ZipFile # 解壓目錄 unzip_path = "./unzip" if not os.path.exists(unzip_path): os.mkdir(unzip_path) with ZipFile("111.xlsx") as f: for file in f.namelist(): # 解壓圖片部分的文件 if file.startswith("xl/media"): f.extract(file, path=unzip_path)

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      詳細(xì)講解可以參考https://blog.csdn.net/ZackSock/article/details/120539753。

      (2)使用openpyxl讀取

      上面的操作可以獲取excel中的圖片,但是有個(gè)缺點(diǎn)。就是我們不知道哪個(gè)圖片來(lái)自哪個(gè)單元,在有些情況下知道圖片來(lái)自哪個(gè)單元是很有比較的。下面我們就來(lái)解決這個(gè)問(wèn)題:

      from openpyxl import load_workbook wb = load_workbook("111.xlsx") ws = wb[wb.sheetnames[0]] # 遍歷表中所有托 for image in ws._images: print(image)

      1

      2

      3

      4

      5

      6

      我們先讀取了一個(gè)表,然后調(diào)用_images獲取表中的所有圖片。但是這個(gè)圖片我們還不能操作,具體對(duì)圖片的操作我們下一節(jié)再看。我們先看看怎么知道圖片來(lái)自哪個(gè)單元,我們可以輸出圖片的anchor._from:

      from openpyxl import load_workbook wb = load_workbook("111.xlsx") ws = wb[wb.sheetnames[0]] for image in ws._images: # 輸出圖片的位置信息 print(image.anchor._from)

      1

      2

      3

      4

      5

      6

      具體輸入內(nèi)容如下:

      Parameters: col=0, colOff=1, row=0, rowOff=1

      1

      2

      3

      其中col表示行號(hào),row表示列號(hào)。根據(jù)這些信息,我們就可以知道圖片的單元了。比如col=0,row=0,表示的應(yīng)該是A1單元。如果col=1,row=1,表示的應(yīng)該是B2單元。

      三、對(duì)讀取的圖片進(jìn)行處理

      對(duì)圖片處理的操作有很多,這里要看具體需要。這里我分享一下把excel中圖片轉(zhuǎn)換成pillow圖片和ndarray對(duì)象的操作。轉(zhuǎn)換后,我們就可以用numpy和pillow對(duì)圖片進(jìn)行各種操作。

      import numpy as np from PIL import Image from openpyxl import load_workbook wb = load_workbook("111.xlsx") ws = wb[wb.sheetnames[0]] for image in ws._images: # 將圖片轉(zhuǎn)換成Pillow中的圖片對(duì)象 img = Image.open(image.ref).convert("RGB") # 將Pillow中的圖片對(duì)象轉(zhuǎn)換成ndarray數(shù)組 img = np.array(img)

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      如果我們excel中的圖片是二維碼,我們就可以進(jìn)行下面的操作:

      import numpy as np from PIL import Image from pyzbar import pyzbar from openpyxl import load_workbook wb = load_workbook("111.xlsx") ws = wb[wb.sheetnames[0]] for image in ws._images: # 轉(zhuǎn)換成容易操作的圖片對(duì)象 img = Image.open(image.ref).convert("RGB") img = np.array(img) # 解析二維碼 data = pyzbar.decode(img) if data: text = data[0].data.decode('utf-8') print(text) else: print("未識(shí)別到內(nèi)容")

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      今天的內(nèi)容就到這里,感興趣的讀者可以關(guān)注“新建文件夾X”。

      Python 彈性文件服務(wù)

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:好好編程-物流項(xiàng)目14【授權(quán)管理-shiro實(shí)現(xiàn)】
      下一篇:oracle診斷工具-RDA使用
      相關(guān)文章
      亚洲中文无码av永久| 亚洲精选在线观看| 国产精品亚洲精品| 亚洲狠狠狠一区二区三区| 亚洲Av综合色区无码专区桃色| 亚洲AV伊人久久青青草原| 亚洲av乱码一区二区三区按摩| 亚洲人AV在线无码影院观看| 亚洲一久久久久久久久| 国产精品高清视亚洲一区二区| 国产精品亚洲片在线va| 亚洲永久在线观看| 亚洲色最新高清av网站| 亚洲人成无码网站在线观看| 亚洲精品无码久久久久秋霞| 亚洲精品久久无码| 色九月亚洲综合网| 精品国产日韩亚洲一区91| 日韩亚洲人成在线综合| 亚洲AV日韩精品一区二区三区| 亚洲国产精品成人久久蜜臀| 亚洲无码视频在线| 亚洲日韩精品无码一区二区三区 | 亚洲欧洲日韩国产一区二区三区| 亚洲一级免费毛片| 亚洲中文无码永久免| 亚洲精品国产精品| 国产成人亚洲精品播放器下载| 亚洲 综合 国产 欧洲 丝袜| 亚洲伊人成无码综合网| 亚洲精品无码不卡在线播放HE| 久久精品亚洲视频| 亚洲成年人电影网站| 2020年亚洲天天爽天天噜| 亚洲精品精华液一区二区| 亚洲电影日韩精品| 亚洲精品无码午夜福利中文字幕| 久久亚洲国产视频| 亚洲制服丝袜一区二区三区| 亚洲精品美女久久7777777 | 亚洲欧美黑人猛交群|