import xlwings as xw
from PIL import ImageGrab
def excel_save_img(path, sheet=0, img_name="1", img_suffix="png"):
app = xw.App(visible=True, add_book=False)
# 1. 使用 xlwings 的 讀取 path 文件 啟動
wb = app.books.open(path)
# 2. 讀取 sheet
sht = wb.sheets[sheet]
# 3. 獲取 行與列
nrow = sht.api.UsedRange.Rows.count
ncol = sht.api.UsedRange.Columns.count
print(nrow)
print(ncol)
# 4. 獲取有內容的 range
range_val = sht.range(
(1, 1), # 獲取 第一行 第一列
(nrow, ncol) # 獲取 第 nrow 行 第 ncol 列
)
print(range_val.value)
# 5. 復制圖片區域
range_val.api.CopyPicture()
# 6. 粘貼
sht.api.Paste()
pic = sht.pictures[0] # 當前圖片
pic.api.Copy() # 復制圖片
img = ImageGrab.grabclipboard() # 獲取剪貼板的圖片數據
img.save(img_name + "." + img_suffix) # 保存圖片
pic.delete() # 刪除sheet上的圖片
wb.close() # 不保存,直接關閉
app.quit() # 退出
path = r"D:\1.xlsx"
excel_save_img(path, sheet=1, img_name='1')