import xlrd
import xlsxwriter
import os
from PIL import Image
import sys
'''
往excel中插入图片
原始excel数据中某一列是订单编号,图片则是以订单编号命名的,若该订单编号对应多个图片,图片命名为:订单编号-num.***
图片插入在原始数据的最后
'''
def func():
image_list=get_images()
nrow=raw_sheet.nrows
nclo=raw_sheet.ncols
for i in range(nrow):
for j in range(nclo):
title=raw_sheet.cell_value(i,j)
print(title)
new_sheet.write(i,j,title)
bnum=raw_sheet.cell_value(i,2).strip()
now_col=nclo
for k in image_list:
if bnum in k and bnum:
img=Image.open(f"images\\{k}")
img_width=img.size[0]
img_height=img.size[1]
x_scale=40/img_width
y_scale=30/img_height
new_sheet.set_column(now_col,now_col+1)
new_sheet.insert_image(i,now_col,f"images\\{k}",{"x_scale":x_scale,"y_scale":y_scale})
now_col+=1
new_sheet.set_default_row(30)
def get_images():
for root,dir,fs in os.walk("images"):
return fs
if __name__ == '__main__':
raw_file=sys.argv[1]
wbook=xlsxwriter.Workbook("new.xlsx")
new_sheet=wbook.add_worksheet()
raw_book=xlrd.open_workbook(raw_file)
raw_sheet=raw_book.sheet_by_index(0)
func()
wbook.close()