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

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 元信息
http://www.jsqmd.com/news/266782/

相关文章:

  • 导师严选9个AI论文平台,专科生轻松搞定毕业论文!
  • 统一身份认证让学工系统管理更简单:一个账号解决所有问题
  • STM32死机90%是因为ISR踩了这5个坑!
  • 终极网盘下载助手:如何一键解锁八大云盘高速下载
  • VirtualLab Fusion:系统建模分析器
  • 合规为基,场景为锚:文心一言API接入的备案要求与深度场景合规解析
  • 2026年口碑苗木批发基地,供应商榜单新鲜出炉,紫薇/白蜡/樱花/红叶李/金叶女贞/苗木/丝棉木,苗木批发基地种植找哪家 - 品牌推荐师
  • 企业如何选择geo优化服务商?2026年geo优化公司全面评测与推荐,破解垂直行业理解与效果保障痛点 - 十大品牌推荐
  • 全内反射棱镜(TIR)的建模
  • 连云港华博机械设备有限公司:蒸汽消音器优势解析 - 速递信息
  • 热门的黑白PE布生产厂家怎么联系?2026年最新排行 - 品牌宣传支持者
  • SpringBoot 拦截器-监听器实战
  • 2026年知名的生态防草布厂家哪家便宜?性价比推荐 - 品牌宣传支持者
  • XUnity.AutoTranslator 完整使用教程:Unity游戏自动翻译插件终极指南
  • 油痘肌指南:洗面奶祛痘控油哪个牌子好,从成分到效果全解析 - 资讯焦点
  • 魔兽争霸III性能优化工具:5大核心功能彻底解决游戏卡顿问题
  • Mi 动漫 / 美食菜谱 / 去水印大师:精准踩中需求的实用工具
  • 思源宋体CN终极使用宝典:7种字重完全免费商用指南
  • 2026年专业GEO服务商深度测评:技术实力与效果转化双维解析 - 十大品牌推荐
  • 2026年geo公司推荐:基于工业与专业服务场景深度评测,解决获客与信任痛点并附排名 - 十大品牌推荐
  • 2026家具定制厂家权威推荐榜单:兔宝宝家具定制/全屋定制橱柜/全屋家具定制/全屋家居定制/全屋定制衣柜源头厂家精选。
  • 评价高的灯杆焊接合缝公司哪家强?2026年TOP3对比 - 品牌宣传支持者
  • 全网最全8个AI论文网站,专科生搞定毕业论文+格式规范!
  • 完整教程:Blender 云渲染平台实测对比:iRender、GarageFarm、渲染101 哪家更适合动画云渲染?
  • 有什么护肤品比较好用?从功效护肤逻辑看2026好用护肤品牌榜单 - 资讯焦点
  • 2026年热门的进口报关报检代办机构怎么联系? - 品牌宣传支持者
  • 2026年,高校“安家费”正退出历史舞台!
  • 2026摇床淘金设备厂家权威推荐榜单:旱地干选淘金设备/选金设备/溜槽淘金设备/岩金淘金设备/混汞淘金设备源头厂家精选。
  • nginx Ingress 限流Lua脚本
  • 窗帘裁剪机|卷边机有实力的源头厂家哪家强?浙江屹杰科技窗帘设备凭实力领跑 - 资讯焦点