import xlsxwriter
def write_excel(file_name, data_list):
'''
:param file_name: D:/new.xlsx
:param data_list: {'shot': shot_list}
:return:
'''
col_list = ['A', 'B', 'C', 'D', 'E']
workbook = xlsxwriter.Workbook(file_name)
worksheet = workbook.add_worksheet()
worksheet.write('A1', u'a')
worksheet.write('B1', u'b')
worksheet.write('C1', u'c')
worksheet.write('D1', u'd')
worksheet.write('E1', u'e')
for m, goods_info_dict in enumerate(data_list):
shot = goods_info_dict['shot']
user = goods_info_dict['user']
time = goods_info_dict['time']
note_list = goods_info_dict['note']
if note_list:
note = note_list[0].decode('gbk') # 中文转码
else:
note = ''
image = goods_info_dict['image']
if image:
worksheet.set_column(0, 8, 20) # 设置列宽20cm
h_list = []
for img in image:
im = Image.open(img) # 返回一个Image对象 img为图片的绝对路径
h_list.append(im.size[1])
h_list.sort(reverse=True)
worksheet.set_row(m + 1, h_list[0]*0.25) # 设置最大图片的高为行高
else:
worksheet.set_row(m + 1, 30)
worksheet.set_column(0, 8, 20) # 设置列宽20cm
for n in range(5): # 列
if n == 0:
worksheet.write(str(col_list[n]) + str(m + 2), shot)
elif n == 1:
worksheet.write(str(col_list[n]) + str(m + 2), user)
elif n == 2:
worksheet.write(str(col_list[n]) + str(m + 2), time)
elif n == 3:
worksheet.write(str(col_list[n]) + str(m + 2), note)
elif n == 4:
try:
for i in range(0, len(image)):
if i != 0:
im = Image.open(image[i-1]) # 返回一个Image对象
x_offset = im.size[0] * i * 0.3 + 20
else:
x_offset = 0
param = {'x_offset': x_offset, 'y_offset': 0, 'x_scale': 0.3, 'y_scale': 0.3}# 设置偏移和缩放
worksheet.insert_image(str(col_list[n]) + str(m + 2), image[i], param)
except Exception as e:
print(e)
workbook.close()