最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python使用openpyxl從URL讀取Excel并獲取單元格樣式

 更新時間:2026年01月19日 09:31:59   作者:weixin_46244623  
這篇文章主要為大家詳細介紹了如何基于openpyxl庫實現(xiàn)從URL讀取Excel文件并提取單元格內容和樣式信息的方法,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下

摘要

本文介紹了基于openpyxl庫實現(xiàn)從URL讀取Excel文件并提取單元格內容和樣式信息的方法。主要實現(xiàn)了兩個功能:1)獲取指定Sheet指定區(qū)域的單元格值及樣式(如字體大小、顏色、背景色等);2)獲取Excel中所有Sheet名稱列表。文章詳細說明了核心思路、完整代碼實現(xiàn)及測試示例,并總結了注意事項和適用場景。該方法無需將Excel保存到本地,適合微服務和接口調用場景,可用于報表解析、在線預覽、樣式還原等多種業(yè)務需求。

一、背景說明

在實際業(yè)務中,我們經常會遇到這樣的需求:

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

需要讀取 Excel 中指定 Sheet

不僅要讀取單元格的值,還要獲取:

  • 字體大小
  • 字體顏色
  • 背景色
  • 主題色
  • 字體名稱等樣式信息

同時支持獲取 所有 Sheet 名稱列表

本文基于 openpyxl,實現(xiàn)了兩個實用函數(shù):

  • 根據(jù) URL + Sheet 名稱 + 單元格范圍,讀取單元格內容和樣式
  • 根據(jù) URL,獲取 Excel 中所有 Sheet 名稱

二、環(huán)境準備

1. Python 版本

Python 3.7+

2. 安裝依賴

pip install openpyxl

三、核心思路

從 URL 讀取 Excel 文件

Excel 并不需要先保存到磁盤,可以直接通過 urllib.request.urlopen 讀取二進制內容,再用 io.BytesIO 轉為內存文件:

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

獲取 Sheet

sheet = wb[sheet_name]

按區(qū)域讀取單元格

openpyxl 支持類似 A2:A5、A1:C10 這種 Excel 區(qū)域寫法:

cell_3 = sheet[sheet_info]

遍歷時需要 雙重循環(huán)(行 + 列)

for row in cell_3:
    for column in row:
        ...

四、完整代碼實現(xiàn)

獲取指定 Sheet 指定區(qū)域的單元格信息

from openpyxl import load_workbook
import io
import urllib.request

def get_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))

        # 根據(jù) sheet 名稱獲取 sheet
        sheet = wb[sheet_name]

        # 獲取指定區(qū)域
        cell_3 = sheet[sheet_info]

        for row in cell_3:
            for column in row:
                js = {}
                js['row'] = column.coordinate
                js['value'] = str(column.value)
                js['font_sz'] = column.font.sz

                # 字體主題色
                if isinstance(column.font.color.theme, int):
                    js['font_theme'] = column.font.color.theme
                else:
                    js['font_theme'] = -1

                # 垂直對齊方式
                if column.font.vertAlign is None:
                    js['vertAlign'] = "None"
                else:
                    js['vertAlign'] = column.font.vertAlign

                # 字體 RGB 顏色
                if isinstance(column.font.color.rgb, str):
                    js['font_color'] = column.font.color.rgb
                else:
                    js['font_color'] = ""

                # 背景 RGB 顏色
                if isinstance(column.fill.start_color.rgb, str):
                    js['back_color'] = column.fill.start_color.rgb
                else:
                    js['back_color'] = ""

                # 字體名稱
                js['name'] = column.font.name

                # 背景主題色
                if isinstance(column.fill.fgColor.theme, int):
                    js['back_theme'] = column.fill.fgColor.theme
                else:
                    js['back_theme'] = -1

                me.append(js)

        res['code'] = "500"
        res['msg'] = "未獲取excel信息"
        res['data'] = me
        return res

    except Exception:
        res['code'] = "400"
        res['msg'] = "url獲取失敗"
        return res

獲取 Excel 中的所有 Sheet 名稱

def get_sheet_list(direct_link):
    res = {}
    try:
        file = urllib.request.urlopen(direct_link).read()
        wb = load_workbook(filename=io.BytesIO(file))

        res['code'] = 200
        res['msg'] = "獲取成功"
        res['data'] = wb.sheetnames

    except Exception:
        res['code'] = "400"
        res['msg'] = "url獲取失敗"

    return res

五、測試示例

a = get_sheet_info(
    "http://192.168.31.161:8080/555.xlsx",
    "采購合理性數(shù)據(jù)分析(答案)",
    "A2:A5"
)
print(a)

b = get_sheet_list("http://192.168.31.161:8080/555.xlsx")
print(b)

六、運行結果示例

單元格信息返回結果

{
  "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
    }
  ]
}

Sheet 列表返回結果

{
  "code": 200,
  "msg": "獲取成功",
  "data": [
    "供應商信息表",
    "采購中標信息表",
    "訂單信息表",
    "采購合理性數(shù)據(jù)分析(答案)"
  ]
}

七、注意事項與坑點總結

theme / rgb 可能為空:必須先判斷類型,否則會報錯

區(qū)域遍歷是二維結構:sheet["A2:A5"] 返回的是「行數(shù)組」

Excel 不落盤,適合微服務 / 接口調用

異常建議細化:實際生產可區(qū)分網絡異常、Sheet 不存在、區(qū)域錯誤等

八、適用場景

  • 報表解析服務
  • Excel 在線預覽
  • 樣式還原
  • BI / 數(shù)據(jù)分析前置處理
  • 后端接口返回 Excel 元信息

到此這篇關于Python使用openpyxl從URL讀取Excel并獲取單元格樣式的文章就介紹到這了,更多相關Python openpyxl讀取Excel內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Pytest使用logging模塊寫日志的實例詳解

    Pytest使用logging模塊寫日志的實例詳解

    logging是python語言中的一個日志模塊,專門用來寫日志的,日志級別通常分為debug、info、warning、error、critical幾個級別,一般情況下,默認的日志級別為warning,在調試或者測試階段,下面就快速體驗一下logging模塊寫日志的用法,感興趣的朋友跟隨小編一起看看吧
    2022-12-12
  • mysql 之通過配置文件鏈接數(shù)據(jù)庫

    mysql 之通過配置文件鏈接數(shù)據(jù)庫

    這篇文章主要介紹了mysql 之通過配置文件鏈接數(shù)據(jù)庫的相關資料,主要是一個單例餓漢式的獲得數(shù)據(jù)庫連接方法工具類的實現(xiàn),需要的朋友可以參考下
    2017-08-08
  • python中裝飾器級連的使用方法示例

    python中裝飾器級連的使用方法示例

    裝飾器本質上是一個Python函數(shù),它可以讓其他函數(shù)在不需要做任何代碼變動的前提下增加額外功能,下面這篇文章主要給大家介紹了關于python中裝飾器級連的使用方法,需要的朋友可以參考借鑒,下面來一起學習學習吧。
    2017-09-09
  • 使用Python寫一個創(chuàng)意五子棋游戲源代碼

    使用Python寫一個創(chuàng)意五子棋游戲源代碼

    這篇文章主要給大家介紹了關于使用Python寫一個創(chuàng)意五子棋游戲的相關資料,Python作為一種簡單易上手的編程語言,能夠輕松實現(xiàn)五子棋游戲,需要的朋友可以參考下
    2023-08-08
  • 利用python實現(xiàn)凱撒密碼加解密功能

    利用python實現(xiàn)凱撒密碼加解密功能

    這篇文章主要介紹了利用python實現(xiàn)凱撒密碼加解密功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • python的簡單web框架flask快速實現(xiàn)詳解

    python的簡單web框架flask快速實現(xiàn)詳解

    這篇文章主要為大家介紹了python的簡單web框架flask快速實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • 詳解python第三方庫的安裝、PyInstaller庫、random庫

    詳解python第三方庫的安裝、PyInstaller庫、random庫

    這篇文章主要介紹了python第三方庫的安裝、PyInstaller庫、random庫,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • 從入門到進階講解Python自動化Playwright實戰(zhàn)指南

    從入門到進階講解Python自動化Playwright實戰(zhàn)指南

    Playwright是針對 Python 語言的純自動化工具,它可以通過單個API自動執(zhí)行?Chromium,Firefox 和 WebKit 瀏覽器,下面小編就來簡單介紹一下它的具體使用吧
    2025-07-07
  • 如何關掉pycharm中的python console(圖解)

    如何關掉pycharm中的python console(圖解)

    本文通過圖文并茂的形式給大家介紹了如何關掉pycharm中的python console,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10
  • Python實現(xiàn)OpenCV的安裝與使用示例

    Python實現(xiàn)OpenCV的安裝與使用示例

    這篇文章主要介紹了Python實現(xiàn)OpenCV的安裝與使用,結合實例形式分析了Python中OpenCV的安裝及針對圖片的相關操作技巧,需要的朋友可以參考下
    2018-03-03

最新評論

广宗县| 鹤岗市| 肇东市| 包头市| 凤山市| 怀化市| 陇川县| 鄂伦春自治旗| 宁强县| 新化县| 楚雄市| 军事| 西青区| 文水县| 论坛| 涞源县| 鲜城| 辉县市| 无棣县| 临泉县| 平罗县| 柳林县| 朝阳县| 梁山县| 麻城市| 弋阳县| 宣恩县| 乐昌市| 砀山县| 义乌市| 阿拉善左旗| 广德县| 林芝县| 乌兰察布市| 苗栗县| 靖西县| 隆昌县| 常熟市| 县级市| 绥宁县| 陆河县|