【办公类-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就能等比例缩小图片并且不损害质量的代码

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

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

相关文章

4 -《本地部署开源大模型》在Ubuntu 22.04系统下部署运行ChatGLM3-6B模型

在Ubuntu 22.04系统下部署运行ChatGLM3-6B模型 大模型部署整体来看并不复杂,且官方一般都会提供标准的模型部署流程,但很多人在部署过程中会遇到各种各样的问题,很难成功部署,主要是因为这个过程会涉及非常多依赖库的安装和更新及…

当当网获得dangdang商品详情 API 返回值说明

item_get-获得dangdang商品详情 dangdang.item_get 公共参数 请求地址: 名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_nameString是API接口名称(包括在请求地址中)[item_search,i…

【AI】人工智能的应用与前景

目录 人工智能的应用与前景1. 人工智能的当前应用1.1 医疗领域1.1.1 医疗影像中的AI应用1.1.2 药物研发中的AI潜力 1.2 企业与商业领域1.2.1 数据驱动的智能决策1.2.2 自动化业务流程 1.3 智能生活领域1.3.1 自动驾驶技术的崛起1.3.2 智能家居中的AI应用 2. 人工智能的未来前景…

Golang | Leetcode Golang题解之第485题最大连续1的个数

题目: 题解: func findMaxConsecutiveOnes(nums []int) (maxCnt int) {cnt : 0for _, v : range nums {if v 1 {cnt} else {maxCnt max(maxCnt, cnt)cnt 0}}maxCnt max(maxCnt, cnt)return }func max(a, b int) int {if a > b {return a}return …

全面解析P2P网络

1. 引言 什么是P2P网络? P2P(Peer-to-Peer)网络是一种分布式网络架构,其中每个节点(或称为“对等体”)都是网络的参与者,节点之间直接进行数据交换与通信。不同于传统的客户端-服务器架构&…

区块链技术在网络安全中的应用研究

摘要: 随着网络技术的快速发展,网络安全问题日益凸显。区块链技术以其去中心化、不可篡改、可追溯等特性,为网络安全提供了新的解决方案。本文深入探讨了区块链技术在网络安全多个领域的应用,包括数据加密与存储、身份认证、网络攻…

Golang | Leetcode Golang题解之第494题目标和

题目&#xff1a; 题解&#xff1a; func findTargetSumWays(nums []int, target int) int {sum : 0for _, v : range nums {sum v}diff : sum - targetif diff < 0 || diff%2 1 {return 0}neg : diff / 2dp : make([]int, neg1)dp[0] 1for _, num : range nums {for j …

HICP--2

在area 0的路由器只生成 area 0 的数据库&#xff0c;只在area 1 的一样。但是既在又在的生成两个 area的 LSDB 一、区域间三类LSA 在OSPF&#xff08;Open Shortest Path First&#xff09;协议中&#xff0c;区域间三类LSA&#xff08;Link-State Advertisement&#xff09…

基于Java+jsp的CRM客户关系管理系统的实现

系统的详细设计和实现 根据上文的功能分析和数据库的分析&#xff0c;在系统的实现阶段上采用当今开源的SSH&#xff08;StrutsHibernateSpring&#xff09;整合框架实现。其目的是降低个模块间的耦合度&#xff0c;使各个模块之间的功能相互独立、模块内部结构清晰。 系统架…

隐藏移动端IOS和安卓上的滚动条

直接上代码&#xff0c;就几行 ::-webkit-scrollbar {/* 不显示出来&#xff0c;安卓上会自动补上滚动条 */display: block;/* 宽度为0&#xff0c;安卓上会自动补上滚动条 */width: .5px; }::-webkit-scrollbar-thumb {/* 让看不见但是存在 */background-color: transparent;…

Go 语言中的静态类型和动态类型

在 Go 语言中&#xff0c;类型系统的主要概念可以分为静态类型和动态类型&#xff0c;这两者的区别主要体现在如何确定和处理变量的类型。以下是对 Go 语言中的动态类型和静态类型的解释&#xff1a; 1. 静态类型&#xff08;Static Typing&#xff09; Go 是一种静态类型语言…

20240803 芯动科技 笔试

文章目录 1、单选题1.11.21.31.42、填空题2.12.23、问答题3.13.23.34、编程题4.14.24.3岗位:嵌入式软件工程师(25届校招)(J12042) 题型:4 道单选题,2 道填空题, 3 道简答题,3 道编程题 1、单选题 1.1 已知 5 个元素的出栈序列是 1,2,3,4,5,6 则对应的入栈顺序可能是 …

听泉鉴宝在三个月前已布局商标注册!

近日“听泉鉴宝”以幽默的风格和节目效果迅速涨粉至2500多万&#xff0c;连线出现“馆藏文物”和“盗墓现场”等内容&#xff0c;听泉鉴宝早在几个月前已布局商标注册。 据普推知产商标老杨在商标局网站检索发现&#xff0c;“听泉鉴宝”的主人丁某所持股的江苏灵匠申请了三十…

视图库对接系列(GA-T 1400)十六-二、视图库对接系列(本级)查询订阅

说明 之前我们在本级中少写了一个查询订阅的接口,这里的话 我们给本级中补充一个功能,实现查询订阅功能。文档 这面我们是向下级发送查询订阅的功能,我们目前测试的话需要手动触发下这个功能, 我们就写一个接口就叫/custom/VIID/Subscribes ,和1400接口的区别是增加了一个…

ffmpeg视频滤镜:双边滤波-bilateral

滤镜简述 bilateral 官网链接 > FFmpeg Filters Documentation 双边滤波是一种图片去噪的方法&#xff0c;它会综合考虑像素的空间和像素值来优化图片&#xff0c;可以看一下如下效果&#xff1a; 左边是 原图&#xff0c;右边是优化后的&#xff0c;相当于磨皮了。 要…

java使用 IDEA自动补全功能 AI 插件

国内插件&#xff1a; CodeGeeX&#xff1a; 功能特性&#xff1a; 由国内团队开发&#xff0c;是一款智能编程助手插件。它集成了多种人工智能技术&#xff0c;能够在多个编程语言中提供智能代码补全、代码生成、代码优化和注释生成等功能。该插件特别适用于常见的编程任务…

LeetCode Hot 100:普通数组

LeetCode Hot 100&#xff1a;普通数组 53. 最大子数组和 思路 1&#xff1a;动态规划 class Solution { public:int maxSubArray(vector<int> &nums){// 特判if (nums.empty())return 0;if (nums.size() 1)return nums[0];int n nums.size();// 状态数组vector…

代码随想录 -- 贪心 -- 合并区间

56. 合并区间 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 先按照左边界从大到小对数组进行排序&#xff1b; 遍历数组&#xff1a;如果当前遍历的区间左边界小于等于前一个区间的右边界&#xff0c;更新当前区间的左边界为最小的左边界&#xff0c;右边界为最…

Python 网络爬虫教程

在大数据时代&#xff0c;获取数据是至关重要的一步。而网络爬虫是获取网络上公开数据的有效工具之一。本文将介绍如何使用 Python 来编写一个基本的网络爬虫&#xff0c;并通过具体的案例来展示如何抓取和处理网页数据。 1. 什么是网络爬虫&#xff1f; 网络爬虫是一种自动化…

linux centos7系统ARM架构下安装最新版docker 27.3.1及docker-compose v2.3.4

卸载旧版本的docker 相关安装包 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine安装最新版docker&#xff0c;通过以下版本下载arm版本docker包 https://download.…