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

server/2024/10/23 18:09:24/

背景需求:

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

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

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

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

只是先把EXCEL的文字做好

代码份两部分:

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

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

代码展示

python">'''
美工室材料报销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就能等比例缩小图片并且不损害质量的代码


http://www.ppmy.cn/server/134227.html

相关文章

Android studio中排除文件功能的小总结

刚开始发现android studio的sourceSets的main下面java的excludes无效,改了好多次都没成功,以为关键字不支持,或者是gradle版本问题,结果查了半天没成功。后来经过对比发现是相对路径问题。 在此总结一下,希望节省大家…

Axure科技感元件:打造可视化大屏设计的得力助手

Axure,作为一款专业的原型设计工具,凭借其强大的设计功能、丰富的组件库和灵活的交互能力,成为了许多设计师打造科技感设计的首选工具。其中,Axure科技感元件更是以其独特的魅力和实用性,在数据可视化大屏、登录界面、…

Zookeeper面试整理-Zookeeper的特性

Zookeeper 具有一些关键的特性,这些特性使其成为分布式系统中非常可靠的协调服务工具。以下是 Zookeeper 的主要特性: 1. 顺序一致性(Sequential Consistency) Zookeeper 保证了所有客户端的操作是按照严格的顺序执行的。每个客户端在对 ZNode 进行操作时,会看到与其他客户…

C++容器适配器的模拟实现-stack、queue、priority_queue

### 容器适配器是将容器转换到其他容器自身不方便使用的地方,但是就容器适配器其本身还是包装的容器,所以这个类模板中各个接口的实现都是调用的容器的接口,因为容器适配器可能适配多个容器,所以这个类模板的模板参数中有一个参数…

基于SpringBoot+Vue+uniapp的电影信息推荐APP的详细设计和实现

详细视频演示 请联系我获取更详细的演示视频 项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不…

Mamba学习笔记(4)——Mamba核心

文章目录 A Visual Guide to Mamba and State Space Models第一部分:The Problem with Transformers第二部分:The State Space Model(SSM)What is a State Space?What is a State Space Model? 第三部分:Mamba - Sel…

【UE5】将2D切片图渲染为体积纹理,最终实现使用RT实时绘制体积纹理【第六篇-阶段总结篇】

因为马上就要进入下一个阶段,制作动态编辑体积纹理的模块。 但在这之前,要在这一章做最后一些整理。 首先,我们完成没完成的部分。其次,最后整理一下图表。最后,本文附上正在用的贴图 完善Shader 还记得我们之前注…

修改pq_default.ini禁用降噪,解决S905X3电视盒硬解视频画质模糊、严重涂抹得像油画、水彩画的问题

笔者使用一台处理器芯片为 S905X3 的电视盒将近一年,性能比之前的 RK3328 的盒子有所提升,但我对它视频解码方面感到越来越不爽,该盒子的硬解视频总是开启美颜降噪和锐化,导致硬解视频的画质模糊,细节都被磨平&#xf…