from PIL import ImageGrab
import xlwings as xw
# get_screenshot
def excel_catch_screen2(shot_excel, sheetname, bu=None):
day = datetime.now().strftime('%Y%m%d')
print(day)
img_dir = r"E:\code\dock_project\excel_image\ppt_images"
image_name = sheetname + f"_{day}.png"
if bu:
image_name = sheetname + f"_{bu}" + f"_{day}.png"
image_name = os.path.join(img_dir, image_name)
if not os.path.exists(image_name):
# kill_excel()
app = xw.App(visible=True, add_book=False) # 使用xlwings的app启动
wb = app.books.open(shot_excel) # 打开文件
sheet = wb.sheets(sheetname) # 选定sheet
# print(222)
info = sheet.used_range
nrows = info.last_cell.row
print(nrows)
ncolumns = info.last_cell.column
print(ncolumns)
sub2_list = ['By BU對比', 'By Brand對比', 'CESBG-By Site', 'Total FCT', 'BU-By Site', 'By Customer', 'By Product']
if sheetname in sub2_list:
ncolumns = ncolumns - 2
letter = convert_to_letter(ncolumns)
print('letter', letter)
row_sub1_list = ['By Brand對比', 'CESBG-By Site', 'Total FCT', 'BU-By Site', 'By Customer', 'By Product']
if sheetname in row_sub1_list:
nrows = nrows - 1
print('row count')
# time.sleep(1000)
screen_area = f"B2:{letter}{nrows}"
title = sheet.range('B1').value
if sheetname == 'Total FCT':
screen_area = f"A2:{letter}{nrows}"
title = sheet.range('A1').value
print('title ---> ', title)
all = sheet.range(screen_area) # 获取有内容的range
# print(all.value)
all.api.CopyPicture() # 复制图片区域
# time.sleep(1)
sheet.api.Paste() # 粘贴
img_name = 'data'
pic = sheet.pictures[0] # 当前图片
pic.api.Copy() # 复制图片
time.sleep(1)
img = ImageGrab.grabclipboard() # 获取剪贴板的图片数据
# img.show()
img.save(image_name) # 保存图片
pic.delete() # 删除sheet上的图片
wb.close() # 不保存,直接关闭
app.quit()
return 1
print('have this one')
return 1
07-09
843
12-10
5333