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

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

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

摘要

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

一、背景說明

在實(shí)際業(yè)務(wù)中,我們經(jīng)常會(huì)遇到這樣的需求:

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

需要讀取 Excel 中指定 Sheet

不僅要讀取單元格的值,還要獲?。?/p>

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

同時(shí)支持獲取 所有 Sheet 名稱列表

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

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

二、環(huán)境準(zhǔn)備

1. Python 版本

Python 3.7+

2. 安裝依賴

pip install openpyxl

三、核心思路

從 URL 讀取 Excel 文件

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

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ū)域?qū)懛ǎ?/p>

cell_3 = sheet[sheet_info]

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

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

四、完整代碼實(shí)現(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

                # 垂直對(duì)齊方式
                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

五、測(cè)試示例

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)

六、運(yùn)行結(jié)果示例

單元格信息返回結(jié)果

{
  "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 列表返回結(jié)果

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

七、注意事項(xiàng)與坑點(diǎn)總結(jié)

theme / rgb 可能為空:必須先判斷類型,否則會(huì)報(bào)錯(cuò)

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

Excel 不落盤,適合微服務(wù) / 接口調(diào)用

異常建議細(xì)化:實(shí)際生產(chǎn)可區(qū)分網(wǎng)絡(luò)異常、Sheet 不存在、區(qū)域錯(cuò)誤等

八、適用場(chǎng)景

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

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

相關(guān)文章

  • Pytest使用logging模塊寫日志的實(shí)例詳解

    Pytest使用logging模塊寫日志的實(shí)例詳解

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

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

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

    python中裝飾器級(jí)連的使用方法示例

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

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

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

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

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

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

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

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

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

    從入門到進(jìn)階講解Python自動(dòng)化Playwright實(shí)戰(zhàn)指南

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

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

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

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

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

最新評(píng)論

庄河市| 社旗县| 张家界市| 辽阳市| 洛宁县| 伊通| 扎赉特旗| 繁昌县| 香河县| 晋江市| 凤台县| 左贡县| 蓝山县| 长宁区| 景洪市| 昌邑市| 阜宁县| 墨脱县| 来安县| 类乌齐县| 新泰市| 屏东市| 郑州市| 沙田区| 高密市| 十堰市| 天峻县| 普陀区| 天台县| 阳山县| 神木县| 翁牛特旗| 剑河县| 富蕴县| 农安县| 建阳市| 施甸县| 汕头市| 栖霞市| 罗田县| 晋江市|