欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > 【办公类-57-01】美工室材料报销EXCEL表批量插入截图(图片)

【办公类-57-01】美工室材料报销EXCEL表批量插入截图(图片)

2024/10/26 14:56:01 来源:https://blog.csdn.net/reasonsummer/article/details/143102826  浏览:    关键词:【办公类-57-01】美工室材料报销EXCEL表批量插入截图(图片)

背景需求:

我们班分到美工室,需要准备大量材料,根据原始的报销单EXCLE,里面有商品名称、图片、链接、单位、数量等信息

今天我和搭档一起填写新表,发现手机截图的图片插入EXCEL后非常大,

需要手动调整图片大小,每一项都要这么插入调整,非常费劲。

因此,我将每张截图单独放在图片文件夹里。

只是先把EXCEL的文字做好

代码份两部分:

1、把EXCEL里面的行高调整到300

2、把原图插入指定的位置(与单元格左上角的坐标相同)

代码展示

'''
美工室材料报销EXCEL插入图片
星火讯飞、阿夏
20241021'''
import os,time
from openpyxl import Workbook, load_workbook
from openpyxl.drawing.image import Image
from PIL import Image as PILImage# 定义文件夹路径和图片大小(以像素为单位)
path = r'C:\Users\jg2yXRZ\OneDrive\桌面\报销清单'
folder_path = path + r'\01图片'
file_path = path + r'\20241020美工室打造 - 副本.xlsx'# 加载现有的Excel工作簿
workbook = load_workbook(filename=file_path)
sheet = workbook.active# 设置新的行高
new_row_height = 300  # 可以根据需要调整行高# 遍历从第4行开始的所有行并设置行高
for row in range(3, sheet.max_row + 1):sheet.row_dimensions[row].height = new_row_height# 保存修改后的工作簿
workbook.save(file_path)# 图片大小参数(以厘米为单位)
image_width_cm = 5
image_height_cm = 10
dpi = 96  # 对于打印,可以使用较高的DPI
image_width_px = int(image_width_cm * dpi / 2.54)
image_height_px = int(image_height_cm * dpi / 2.54)# 获取文件夹中的所有图片文件
image_files = [f for f in os.listdir(folder_path) if f.endswith(('png', 'jpg', 'jpeg', 'bmp', 'gif'))]# 创建一个新的Excel工作簿或加载现有的工作簿
try:workbook = load_workbook(file_path)
except FileNotFoundError:workbook = Workbook()
sheet = workbook.active# 插入图片到指定的单元格
for i, image_file in enumerate(image_files):img_path = os.path.join(folder_path, image_file)img = PILImage.open(img_path)img = img.resize((image_width_px, image_height_px), PILImage.LANCZOS)  # 使用高质量的缩放算法调整图片大小img = Image(img_path)cell = sheet.cell(row=i + 3, column=2)  # B列从第3行开始sheet.add_image(img, cell.coordinate)# 保存工作簿
workbook.save(path + r'\20241020美工室打造 - 副本2.xlsx')time.sleep(2)

终端运行

必须插入原图282KB,等会儿缩小的只是长宽,如果想把图片放大,还能显示清晰的内容。

测试多次也没有找到可以批量缩小图片长宽,保留质量的代码,因此只能手动修改

第1步,全选文字、图片

第2步,图片格式等比例,缩小到14%

每张插入的图片都在B单元格范围内

第3步,如果一个格子有多张图片,把第二张图片编号放到最后,

把列宽拉大

最终效果

后续再用星火讯飞寻找用Python就能等比例缩小图片并且不损害质量的代码

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com