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

news2024/10/26 18:33:13

背景需求:

我们班分到美工室,需要准备大量材料,根据原始的报销单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就能等比例缩小图片并且不损害质量的代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2224122.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

alovajs:前后端交互还能这么玩?

嘿,小伙伴们!今天我要和大家分享一个超级有趣的发现。最近在折腾项目时,我遇到了一个叫 alovajs 的工具,它居然能帮我们构建 Client-Server 交互层!听起来有点高大上,但其实超级实用。一起来探索这个新大陆…

JS+Springboot做一个交互Demo

背景:老大做了一个 SDK,包含字符加解密、文件加解密,要求能从前端访问,并且能演示的 Demo。 思路:html 写页面,js 发送请求,freemarker 做简单的参数交互,JAVA 后端处理。 一、项目依…

element 按钮变形 el-button样式异常

什么都没动,element UI的按钮变形了,莫名其妙,连官网的也变形了,换了其它浏览器又正常, 难道这是element UI的问题?NO,是浏览器的插件影响到了!去扩展插件里面一个个关闭扩展&#x…

使用高德API和MapboxGL实现路径规划并语音播报

概述 本文使用高德API实现位置查询和路径规划,使用MapboxGL完成地图交互与界面展示,并使用Web Speech API实现行驶中路线的实时语音播报。 效果 Web Speech API简介 Web Speech API 使你能够将语音数据合并到 Web 应用程序中。Web Speech API 有两个部…

软件测试的重要一环:「性能测试」怎么做?

性能测试是软件测试中的重要一环,今天给大家介绍性能测试及如何使用RunnerGo完成性能测试任务。 性能测试是什么? 一句话概括:不断地通过不同场景的系统表现去探究系统设计与资源消耗之间的平衡,为开发人员提供消除瓶颈所需的诊…

IntelliJ IDEA 设置数据库连接全局共享

前言 在日常的软件开发工作中,我们经常会遇到需要在多个项目之间共享同一个数据库连接的情况。默认情况下,IntelliJ IDEA 中的数据库连接配置是针对每个项目单独存储的。这意味着如果你在一个项目中配置了一个数据库连接,那么在另一个项目中…

从零搭建开源陪诊系统:关键技术栈与架构设计

构建一个开源陪诊系统是一个涉及多种技术的复杂工程。为了让这个系统具备高效、可靠和可扩展的特点,我们需要从架构设计、技术栈选择到代码实现等方面进行全面的考量。本文将从零开始,详细介绍搭建开源陪诊系统的关键技术栈和架构设计,并提供…

C#中的委托、匿名方法、Lambda、Action和Func

委托 委托概述 委托是存有对某个方法的引用的一种引用类型变量。定义方法的类型,可以把一个方法当作另一方法的参数。所有的委托(Delegate)都派生自 System.Delegate 类。委托声明决定了可由该委托引用的方法。 # 声明委托类型 委托类型声…

汽车免拆诊断案例 | 2019 款奥迪 A6L 车行驶中偶发熄火

故障现象  一辆2019款奥迪A6L车,搭载2.0T发动机,累计行驶里程约为9万km。车主反映,车辆行驶中偶发熄火,故障频率较高。 故障诊断  接车后试车,起动发动机,可以正常起动着机。使用故障检测仪检测&#x…

ELK之路第一步——Elasticsearch集群的搭建以及踩坑记录

elasticSearch集群 前言一、架构二、下载三、虚拟机相关设置3.1 创建es用户3.2 为建es用户赋权sudo3.3 更换es目录所属用户 四、Elasticsearch配置文件修改4.1 修改elasticsearch.yml4.2 修改jvm.options4.3 修改jdk路径 五、启动六、启动报错七、可视化界面cerebro 前言 Elk&…

springboot080房屋租赁管理系统的设计与实现(论文+源码)_kaic

毕 业 设 计(论 文) 题目:房屋租赁管理系统的设计与实现 摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好…

Linux 基础io_ELF_虚拟物理地址_动态库加载

1.可执行程序格式 ELF [wwshcss-ecs-178e myshell]$ ll total 56 -rw-rw-r-- 1 wws wws 92 Oct 17 19:14 file -rw-rw-r-- 1 wws wws 82 Oct 12 16:51 makefile -rw-r--r-- 1 wws wws 90 Oct 17 19:13 myfile -rwxrwxr-x 1 wws wws 20128 Oct 16 21:02 myshell -rw-r…

005:航空力学基础、无人机操纵、飞机性能

摘要:本文详细介绍无人机稳定性、操控性、飞机性能等概念。 一、飞机的稳定性 概念: 飞机的稳定性(安定性),是指在飞机受到扰动后,不经飞行员操纵,能恢复到受扰动前的原始状态(即原…

萤石设备视频接入平台EasyCVR私有化视频平台变电站如何实现远程集中监控?

一、方案背景 随着城市经济的发展和电力系统的改造,变电站的数量和规模逐渐增加,对变电站的安全管理和监控需求也越来越高。视频监控系统作为重要的安全管理手段,在变电站中起到了关键的作用。 目前青犀视频研发的萤石设备视频接入平台EasyC…

刷题 - 图论

1 | bfs/dfs | 网格染色 200. 岛屿数量 访问到马上就染色(将visited标为 true)auto [cur_x, cur_y] que.front(); 结构化绑定(C17)也可以不使用 visited数组,直接修改原始数组时间复杂度: O(n * m),最多将 visited 数…

生信软件39 - GATK最佳实践流程重构,提高17倍分析速度的LUSH流程

1. LUSH流程简介 基因组测序通常用于分子诊断、分期和预后,而大量测序数据在分析时间方面提出了挑战。 对于从FASTQ到VCF的整个流程,LUSH流程在非GVCF和GVCF模式下都大大降低了运行时间,30 X WGS数据耗时不到2 h,从BAM到VCF约需…

力扣143:重排链表

给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → … → Ln - 1 → Ln请将其重新排列后变为: L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → … 不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示…

【已解决】C# NPOI如何在Excel文本中增加下拉框

前言 上图&#xff01; 解决方法 直接上代码&#xff01;&#xff01;&#xff01;&#xff01;综合了各个大佬的自己修改了一下&#xff01;可以直接规定在任意单元格进行设置。 核心代码方法块 #region Excel增加下拉框/// <summary>/// 增加下拉框选项/// </s…

在 Ubuntu 上安装 OpenCV 3.2.0 的详细指南

以下步骤将指导您如何在 Ubuntu 系统上从源码编译并安装 OpenCV 3.2.0。 步骤 1&#xff1a;更新系统并安装必备工具 首先&#xff0c;更新您的系统并安装编译 OpenCV 所需的基本工具和库。 sudo apt-get update sudo apt-get upgrade sudo apt-get install build-essential…

docker 可用镜像服务地址(2024.10.25亲测可用)

1.错误 Error response from daemon: Get “https://registry-1.docker.io/v2/” 原因&#xff1a;镜像服务器地址不可用。 2.可用地址 编辑daemon.json&#xff1a; vi /etc/docker/daemon.json内容修改如下&#xff1a; {"registry-mirrors": ["https://…