news 2026/2/14 18:14:38

Python 使用 openpyxl 从 URL 读取 Excel 并获取 Sheet 及单元格样式信息

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python 使用 openpyxl 从 URL 读取 Excel 并获取 Sheet 及单元格样式信息

摘要

本文介绍了基于openpyxl库实现从URL读取Excel文件并提取单元格内容和样式信息的方法。主要实现了两个功能:1)获取指定Sheet指定区域的单元格值及样式(如字体大小、颜色、背景色等);2)获取Excel中所有Sheet名称列表。文章详细说明了核心思路、完整代码实现及测试示例,并总结了注意事项和适用场景。该方法无需将Excel保存到本地,适合微服务和接口调用场景,可用于报表解析、在线预览、样式还原等多种业务需求。

一、背景说明

在实际业务中,我们经常会遇到这样的需求:

  • Excel 文件不在本地,而是通过HTTP URL提供

  • 需要读取 Excel 中指定Sheet

  • 不仅要读取单元格的值,还要获取:

    • 字体大小
    • 字体颜色
    • 背景色
    • 主题色
    • 字体名称等样式信息
  • 同时支持获取所有 Sheet 名称列表

本文基于openpyxl,实现了两个实用函数:

  1. 根据 URL + Sheet 名称 + 单元格范围,读取单元格内容和样式
  2. 根据 URL,获取 Excel 中所有 Sheet 名称

二、环境准备

1. Python 版本

Python3.7+

2. 安装依赖

pipinstallopenpyxl

三、核心思路

1️⃣ 从 URL 读取 Excel 文件

Excel 并不需要先保存到磁盘,可以直接通过urllib.request.urlopen读取二进制内容,再用io.BytesIO转为内存文件:

file=urllib.request.urlopen(direct_link).read()wb=load_workbook(filename=io.BytesIO(file))

2️⃣ 获取 Sheet

sheet=wb[sheet_name]

3️⃣ 按区域读取单元格

openpyxl支持类似A2:A5A1:C10这种 Excel 区域写法:

cell_3=sheet[sheet_info]

遍历时需要双重循环(行 + 列)

forrowincell_3:forcolumninrow:...

四、完整代码实现

1️⃣ 获取指定 Sheet 指定区域的单元格信息

fromopenpyxlimportload_workbookimportioimporturllib.requestdefget_sheet_info(direct_link,sheet_name,sheet_info):me=[]res={}try:# 从 URL 读取 Excel 文件file=urllib.request.urlopen(direct_link).read()wb=load_workbook(filename=io.BytesIO(file))# 根据 sheet 名称获取 sheetsheet=wb[sheet_name]# 获取指定区域cell_3=sheet[sheet_info]forrowincell_3:forcolumninrow:js={}js['row']=column.coordinate js['value']=str(column.value)js['font_sz']=column.font.sz# 字体主题色ifisinstance(column.font.color.theme,int):js['font_theme']=column.font.color.themeelse:js['font_theme']=-1# 垂直对齐方式ifcolumn.font.vertAlignisNone:js['vertAlign']="None"else:js['vertAlign']=column.font.vertAlign# 字体 RGB 颜色ifisinstance(column.font.color.rgb,str):js['font_color']=column.font.color.rgbelse:js['font_color']=""# 背景 RGB 颜色ifisinstance(column.fill.start_color.rgb,str):js['back_color']=column.fill.start_color.rgbelse:js['back_color']=""# 字体名称js['name']=column.font.name# 背景主题色ifisinstance(column.fill.fgColor.theme,int):js['back_theme']=column.fill.fgColor.themeelse:js['back_theme']=-1me.append(js)res['code']="500"res['msg']="未获取excel信息"res['data']=mereturnresexceptException:res['code']="400"res['msg']="url获取失败"returnres

2️⃣ 获取 Excel 中的所有 Sheet 名称

defget_sheet_list(direct_link):res={}try:file=urllib.request.urlopen(direct_link).read()wb=load_workbook(filename=io.BytesIO(file))res['code']=200res['msg']="获取成功"res['data']=wb.sheetnamesexceptException:res['code']="400"res['msg']="url获取失败"returnres

五、测试示例

a=get_sheet_info("http://192.168.31.161:8080/555.xlsx","采购合理性数据分析(答案)","A2:A5")print(a)b=get_sheet_list("http://192.168.31.161:8080/555.xlsx")print(b)

六、运行结果示例

1️⃣ 单元格信息返回结果

{"code":"500","msg":"未获取excel信息","data":[{"row":"A2","value":"季度","font_sz":11.0,"font_theme":1,"vertAlign":"None","font_color":"","back_color":"00000000","name":"宋体","back_theme":-1},{"row":"A3","value":"2018-1","font_sz":11.0,"font_theme":1,"vertAlign":"None","font_color":"","back_color":"00000000","name":"宋体","back_theme":-1}]}

2️⃣ Sheet 列表返回结果

{"code":200,"msg":"获取成功","data":["供应商信息表","采购中标信息表","订单信息表","采购合理性数据分析(答案)"]}

七、注意事项与坑点总结

  1. theme / rgb 可能为空

    • 必须先判断类型,否则会报错
  2. 区域遍历是二维结构

    • sheet["A2:A5"]返回的是「行数组」
  3. Excel 不落盘,适合微服务 / 接口调用

  4. 异常建议细化

    • 实际生产可区分网络异常、Sheet 不存在、区域错误等

八、适用场景

  • 报表解析服务
  • Excel 在线预览
  • 样式还原
  • BI / 数据分析前置处理
  • 后端接口返回 Excel 元信息
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/10 11:43:26

导师严选9个AI论文平台,专科生轻松搞定毕业论文!

导师严选9个AI论文平台,专科生轻松搞定毕业论文! AI 工具如何成为专科生论文写作的得力助手 在当前学术写作日益数字化的背景下,AI 工具正逐渐成为学生群体的重要辅助。尤其对于专科生而言,面对论文写作的压力和时间限制&#xff…

作者头像 李华
网站建设 2026/2/13 14:42:04

PHP原生智能在线客服源码系统,为企业构建强大的智能服务中台

温馨提示:文末有资源获取方式在客户体验至上的时代,一个高效、智能、全天候的客服系统已成为企业不可或缺的数字化基础设施。今天,我们为您深度解析一款基于PHP原生开发的智能客服系统源码,它能无缝集成于企业微信,为企…

作者头像 李华
网站建设 2026/2/9 22:36:32

PDF编辑神器,好用全面

今天给大家介绍一款功能强大的PDF编辑软件,不仅可以随意编辑PDF的内容、图片,甚至还有OCR的功能,一键识别表单信息,功能非常全面,有需要的小伙伴可以下载收藏。 PDF XChange Editor PDF编辑器 这款软件完全免费,下载后…

作者头像 李华
网站建设 2026/2/13 8:19:29

人源LAMP1蛋白如何调控细胞器稳态与功能?

一、LAMP1的分子结构特征如何奠定其功能基础?人源溶酶体相关膜蛋白1(LAMP1)是定位于溶酶体膜的主要整合糖蛋白之一,属于溶酶体相关膜蛋白家族。该蛋白不仅是溶酶体膜的重要结构成分,更在维持溶酶体结构与功能完整性、介…

作者头像 李华
网站建设 2026/2/12 15:03:30

如何快速搭建一套物联网平台

物联网平台 - Thinglinks-iot ## 🌟 项目简介 一个功能完备、高可扩展的物联网平台,提供完整的设备接入、管理和数据处理解决方案。支持多种网络协议,具备强大的消息解析和实时告警能力,帮助企业快速构建物联网应用。 该项目现已纳…

作者头像 李华
网站建设 2026/2/11 17:20:31

Mi 动漫 / 美食菜谱 / 去水印大师:精准踩中需求的实用工具

翻应用商店总怕碰着 “花架子”,直到挖到这三款,试完直接清了半手机冗余软件。 mi 动漫是二次元的 “实时补给站”。界面按 “追番日历 / 题材” 分类,新更作品标着更新时间,连小众短篇都能挖到高清章节。无广弾窻,存…

作者头像 李华