当前位置: 首页 > news >正文

excel 通过openpyxl表格下载和插入图片

 1。 从表格下载图片

def download_excel_images(excel_path, url_path, output_dir):    # 设置路径os.makedirs(output_dir, exist_ok=True)position_log = []res = []# 方法2:用openpyxl记录单元格位置(需额外安装 pip install openpyxl)wb = load_workbook(excel_path)sheet = wb.activeurl_matrix = {}for i, img in enumerate(sheet._images):# 获取图片位置锚点anchor = img.anchorrow_idx = anchor._from.row  # 0-basedcol_idx = anchor._from.col  # 0-basedtop_left_cell = f"{chr(65+anchor._from.col)}{anchor._from.row+1}"img_name = f"{sheet.title}_img_{i}.png"with open(os.path.join(output_dir, img_name), "wb") as f:f.write(img.ref.getvalue())position_log.append(f"{img_name} | 位置: {sheet.title}!{top_left_cell}") img_data = Image.open(img.ref)img_url = upload_img(img_data)# 按行号分组,每行是一个dictif row_idx not in url_matrix:url_matrix[row_idx] = {}url_matrix[row_idx][col_idx] = img_url# pdb.set_trace()for row in sorted(url_matrix.keys()):row_urls = [url_matrix[row].get(col, "") for col in range(3)]res.append(row_urls)df = pd.DataFrame(res, columns=["图片1_url", "图片2_url", "图片3_url"])df.to_excel(url_path, index=False)

2. 通过图片链接将图片插入表格

def insert_img2excel(excel_path, url_path, output_dir):data = pd.read_excel(excel_path)# 创建一个工作簿wb = Workbook()# 获取默认的活动工作表ws = wb.activews.column_dimensions['C'].width = 100i = 2for index, row in data.iterrows():try:response = requests.get(row["merge_image_url2"])img = response.contentimage_path = os.path.join(output_dir, hashlib.md5(img).hexdigest()[:5] + ".png")# with open(image_path, 'wb') as f:#     f.write(img)# pdb.set_trace()except Exception as e:continueimg = Image.open(BytesIO(img))img.save(image_path)image_data = image.Image(image_path)image_data.width, image_data.height = 100, 100ws.add_image(image_data, "C" + str(i))ws.row_dimensions[i].height = 100image_path = image_pathi = i + 1wb.save(url_path)

http://www.dtcms.com/a/280313.html

相关文章:

  • 京东平台商品评论接口接入指南与代码实现
  • 国内大模型技术与应用综述
  • 区块链:以太坊侧链Polygon
  • 日常运维问题汇总-59
  • STL的一些知识点
  • C/C++宏定义中do{}while(0)的妙用
  • CAS单点登录架构详解
  • 弗兰肯斯坦式的人工智能与GTM策略的崩溃
  • (LeetCode 每日一题) 3136. 有效单词 (字符串)
  • 【牛客LeetCode数据结构】单链表的应用——移除链表元素问题、链表分割问题详解
  • 从零构建鸿蒙应用:深度解析应用架构与项目结构
  • MIPI DSI(五) DBI 和 DPI 格式
  • 3.2数据库-关系代数-函数依赖-范式
  • Pitaya 是一个简单、快速、轻量级的游戏服务器框架,它为分布式多人游戏和服务器端应用程序提供了一个基本的开发框架
  • java的BO VO PO DO等对象的统称
  • 【Numba】正确使用numba,让你的python代码原地起飞!
  • 【转】Rust: PhantomData,#may_dangle和Drop Check 真真假假
  • 022_提示缓存与性能优化
  • 程序“夯住“的常见原因
  • 在物联网系统中时序数据库和关系型数据库如何使用?
  • 深入掌握Python正则表达式:re库全面指南与实战应用
  • .NET 10 Preview 1发布
  • OpenCV多尺度图像增强算法函数BIMEF()
  • 算法第23天|贪心算法:基础理论、分发饼干、摆动序列、最大子序和
  • iOS 加固工具使用经验与 App 安全交付流程的实战分享
  • react的Fiber架构和双向链表区别
  • 小架构step系列15:白盒集成测试
  • 大型语言模型(LLM)的技术面试题
  • 如何防止直线电机模组在高湿环境下生锈?
  • 《每日AI-人工智能-编程日报》--2025年7月15日