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

Python批量重命名Excel工作表的示例詳解

 更新時間:2026年06月30日 09:28:31   作者:楊利杰YJlio  
本文介紹了如何使用Python自動化批量重命名Excel工作表的實用方法,針對日常辦公中需要處理大量工作表的場景,通過Python腳本可以高效完成重復(fù)性命名操作,有需要的小伙伴可以了解下

1. 問題背景:為什么要批量重命名工作表

本文主題是:批量重命名一個工作簿中的所有工作表。這個案例看起來不復(fù)雜,但它其實很有代表性,因為它解決的是 Excel 辦公自動化里非常常見的一類問題:對象不是一個,而是一組;操作不是一次,而是批量重復(fù)執(zhí)行。

在日常報表處理中,一個工作簿里經(jīng)常會有很多工作表,比如 銷售_1月、銷售_2月、銷售_3月、銷售-華北、銷售-華東。如果只是改一兩張表,手動操作問題不大;但如果一個文件里有幾十張工作表,每個月都要處理一次,手動重命名就會變成重復(fù)勞動。

推薦做法是:把這種“規(guī)則明確、重復(fù)次數(shù)多、人工容易漏”的工作交給 Python。人負(fù)責(zé)判斷規(guī)則,腳本負(fù)責(zé)機械執(zhí)行,這才是辦公自動化真正能節(jié)省時間的地方。

這張圖展示的是本文的整體主題:用 Python 操作 Excel,對工作簿中的工作表名稱進行批量替換,從而實現(xiàn)一鍵重命名。

從圖中可以看出,批量重命名的本質(zhì)不是“打開 Excel 點幾下”,而是把舊名稱中的固定關(guān)鍵詞提取出來,再用程序統(tǒng)一替換。比如將工作表名中的 銷售 刪除,最終得到更干凈、更統(tǒng)一的名稱結(jié)構(gòu)。

2. 應(yīng)用場景:哪些情況適合用腳本處理

這個案例最適合處理命名規(guī)則相對固定的 Excel 工作簿。比如每張表都帶有相同前綴、相同業(yè)務(wù)關(guān)鍵詞,或者每次導(dǎo)出的報表都會自動帶上某些不需要的文字。只要重命名規(guī)則能說清楚,腳本就能穩(wěn)定執(zhí)行。

常見場景包括:月度銷售報表、區(qū)域匯總報表、庫存分類報表、部門統(tǒng)計表、項目進度表等。尤其是在一個工作簿里有大量 sheet 頁時,批量處理的價值會非常明顯。

不建議一上來就寫復(fù)雜腳本。真正穩(wěn)妥的做法是先拿一個測試文件驗證規(guī)則,比如先確認(rèn)要刪除的關(guān)鍵詞是什么、刪除后會不會出現(xiàn)重名、是否會影響后續(xù)公式引用。腳本能提高效率,但不能替你判斷業(yè)務(wù)規(guī)則是否正確。

這張圖展示的是實際應(yīng)用場景:將工作表名稱中的關(guān)鍵詞統(tǒng)一刪除,用于報表批量處理和辦公自動化。

從圖中可以看出,處理前的工作表名稱都包含 銷售 這個關(guān)鍵詞;處理后,關(guān)鍵詞被統(tǒng)一刪除,只保留月份或區(qū)域信息。這種場景非常適合用 replace() 完成,因為它的規(guī)則簡單、目標(biāo)明確、結(jié)果也容易驗證。

3. 核心原理:不是重命名一張表,而是遍歷一組表

批量重命名工作表的核心邏輯可以拆成三步:第一步,獲取當(dāng)前工作簿里的所有工作表;第二步,循環(huán)遍歷每一張工作表;第三步,對每一張工作表的名稱執(zhí)行字符串替換。

原理上要抓住一個關(guān)鍵點:Excel 工作簿不是一個孤立文件,里面還包含很多對象,比如工作表、單元格、區(qū)域、圖表等。本案例處理的對象就是工作表集合,也就是 workbook.sheets 或類似對象。

這張圖展示的是代碼層面的核心邏輯:獲取工作表集合、通過循環(huán)逐張?zhí)幚?、最后使?replace() 完成名稱替換。

從圖中可以看出,代碼并不是直接“批量修改”,而是通過循環(huán)把批量任務(wù)拆成一張表一張表地處理。這個思路很重要,因為后面很多 Excel 自動化任務(wù)都是類似套路:先獲取對象集合,再循環(huán)處理每個對象,最后保存結(jié)果。

4. 實現(xiàn)代碼:用 replace 批量替換工作表名稱

下面這段代碼使用 xlwings 作為示例。它的好處是比較貼近真實 Excel 操作邏輯,適合初學(xué)者理解“打開工作簿、獲取工作表、修改名稱、保存關(guān)閉”的完整過程。

import xlwings as xw

file_path = r"e:\file\demo.xlsx"  # 修改為你的 Excel 文件路徑
old_word = "銷售"
new_word = ""                     # 空字符串表示刪除該關(guān)鍵詞

app = xw.App(visible=False, add_book=False)

try:
    wb = app.books.open(file_path)
    worksheets = wb.sheets

    for sht in worksheets:
        old_name = sht.name
        new_name = old_name.replace(old_word, new_word)

        if old_name != new_name:
            sht.name = new_name

    wb.save()
    wb.close()

finally:
    app.quit()

這里的 old_word 表示要查找的舊關(guān)鍵詞,new_word 表示替換后的新內(nèi)容。如果 new_word 是空字符串,就相當(dāng)于把舊關(guān)鍵詞刪除。比如 銷售_1月 會變成 _1月

推薦保留 old_name 和 new_name 兩個變量。雖然直接寫一行也能實現(xiàn),但在實際排錯時,保留變量更容易打印日志,也更容易判斷腳本到底修改了哪些工作表。

如果想把 銷售 替換成 營收,只需要這樣修改:

old_word = "銷售"
new_word = "營收"

這類代碼最怕的是“看起來運行成功,但結(jié)果不符合預(yù)期”。所以寫完腳本之后,不要只看有沒有報錯,還要打開 Excel 文件檢查工作表名稱是否真正變更。

5. 進階用法:只重命名部分工作表

真實辦公場景里,不一定每次都要修改所有工作表。有時候只想改第 2 張到第 5 張,有時候只想改名稱中包含某個關(guān)鍵詞的工作表。這時就不能簡單地“全量遍歷后全部替換”,否則很容易誤傷正常工作表。

這里要有一個判斷:全量處理適合規(guī)則非常統(tǒng)一的文件;部分處理適合結(jié)構(gòu)復(fù)雜、混合多類工作表的文件。越是正式報表,越應(yīng)該謹(jǐn)慎控制處理范圍。

這張圖展示的是兩種常見的部分重命名方式:一種是通過切片控制工作表范圍,另一種是通過條件判斷篩選需要處理的工作表。

從圖中可以看出,切片適合處理固定位置的工作表,比如第 2 到第 5 張;條件篩選適合處理名稱中包含指定關(guān)鍵詞的工作表,比如只處理包含 銷售 的 sheet。相比全量處理,部分重命名更穩(wěn),也更符合真實辦公場景。

如果只想處理第 2 到第 5 張工作表,可以使用切片:

for sht in worksheets[1:5]:
    sht.name = sht.name.replace("銷售", "")

這里要注意,Python 的切片是左閉右開,worksheets[1:5] 對應(yīng)的是第 2、3、4、5 張工作表,不包括第 6 張。

如果只想處理名稱中包含 銷售 的工作表,可以使用條件判斷:

for sht in worksheets:
    if "銷售" in sht.name:
        sht.name = sht.name.replace("銷售", "")

實際使用時我更推薦條件判斷。因為它不依賴工作表位置,只依賴名稱規(guī)則。只要命名規(guī)范穩(wěn)定,條件判斷就比固定序號更可靠。

6. 效果驗證:腳本跑完不等于任務(wù)完成

很多初學(xué)者寫自動化腳本時容易犯一個錯誤:只要程序沒有報錯,就認(rèn)為任務(wù)完成了。這個判斷太粗糙。辦公自動化真正要看的是輸出結(jié)果是否符合業(yè)務(wù)預(yù)期。

本案例至少要做三類驗證:第一,工作表名稱是否已經(jīng)按規(guī)則替換;第二,是否存在誤刪關(guān)鍵詞導(dǎo)致名稱異常;第三,是否出現(xiàn)重名、非法字符或長度超限等問題。

如果是企業(yè)內(nèi)部實際使用,我建議增加一份修改日志,把修改前和修改后的工作表名稱都記錄下來。這樣后續(xù)出現(xiàn)問題時,能快速定位是哪張表被改過。

for sht in worksheets:
    old_name = sht.name
    new_name = old_name.replace(old_word, new_word)

    if old_name != new_name:
        print(f"重命名:{old_name} -> {new_name}")
        sht.name = new_name

推薦先打印日志,再真正保存文件。如果第一次運行不確定結(jié)果,可以先不執(zhí)行 wb.save(),只打印重命名計劃,確認(rèn)沒問題后再保存。

7. 常見問題:批量重命名最容易踩的坑

批量重命名工作表看似簡單,但有幾個坑必須提前知道。Excel 對工作表名稱有自己的限制,不是任何字符串都能作為 sheet 名稱。

這張圖展示的是批量重命名工作表時最常見的三個問題:工作表名重復(fù)、包含非法字符、名稱長度超限。

從圖中可以看出,Excel 工作表名稱必須保持唯一。如果兩個工作表替換后變成同一個名字,腳本就會失敗。比如 銷售報表報表 在某些替換規(guī)則下可能都變成 報表,這就會造成重名沖突。

另外,工作表名稱不能包含 \、/、:、*、?、[、] 等非法字符,也不能超過 31 個字符。如果腳本沒有提前校驗這些規(guī)則,批量運行時就可能中途報錯,甚至導(dǎo)致部分表已經(jīng)修改、部分表沒有修改。

更穩(wěn)妥的做法是先寫一個名稱校驗函數(shù),對新名稱進行檢查。下面是一個簡單示例:

def is_valid_sheet_name(name):
    invalid_chars = ['\\', '/', ':', '*', '?', '[', ']']

    if not name:
        return False

    if len(name) > 31:
        return False

    for char in invalid_chars:
        if char in name:
            return False

    return True

  如果要進一步增強穩(wěn)定性,還可以在重命名前先收集所有新名稱,統(tǒng)一檢查是否存在重復(fù),而不是邊改邊發(fā)現(xiàn)問題。

new_names = []

for sht in worksheets:
    new_name = sht.name.replace(old_word, new_word)
    new_names.append(new_name)

if len(new_names) != len(set(new_names)):
    raise ValueError("重命名后存在重復(fù)工作表名,請先檢查規(guī)則。")

正式處理重要文件前,一定要先備份原文件。這個習(xí)慣比任何代碼技巧都重要。腳本執(zhí)行速度很快,錯起來也很快;沒有備份,后悔成本會很高。

8. 完整增強版代碼:增加校驗和日志輸出

如果只是學(xué)習(xí),前面的基礎(chǔ)版代碼已經(jīng)夠用。但如果準(zhǔn)備把它作為自己的辦公自動化腳本模板,我建議增加三個能力:名稱校驗、重復(fù)檢測、日志輸出。這樣腳本更接近真實可用狀態(tài)。

import xlwings as xw

file_path = r"e:\file\demo.xlsx"
old_word = "銷售"
new_word = ""

def is_valid_sheet_name(name):
    invalid_chars = ['\\', '/', ':', '*', '?', '[', ']']

    if not name:
        return False, "工作表名不能為空"

    if len(name) > 31:
        return False, "工作表名不能超過 31 個字符"

    for char in invalid_chars:
        if char in name:
            return False, f"工作表名不能包含非法字符:{char}"

    return True, "校驗通過"

app = xw.App(visible=False, add_book=False)

try:
    wb = app.books.open(file_path)
    worksheets = wb.sheets

    rename_plan = []

    for sht in worksheets:
        old_name = sht.name
        new_name = old_name.replace(old_word, new_word)

        valid, message = is_valid_sheet_name(new_name)
        if not valid:
            raise ValueError(f"{old_name} -> {new_name} 校驗失敗:{message}")

        rename_plan.append((old_name, new_name))

    new_names = [item[1] for item in rename_plan]

    if len(new_names) != len(set(new_names)):
        raise ValueError("重命名后存在重復(fù)工作表名,請調(diào)整替換規(guī)則。")

    for old_name, new_name in rename_plan:
        if old_name != new_name:
            print(f"重命名:{old_name} -> {new_name}")
            wb.sheets[old_name].name = new_name

    wb.save()
    wb.close()

finally:
    app.quit()

這版代碼比基礎(chǔ)版更啰嗦,但更適合真實工作。因為它先生成重命名計劃,檢查沒有問題之后才真正執(zhí)行修改。這就是自動化腳本里很重要的思想:先預(yù)演,再執(zhí)行。

如果處理的是非常重要的業(yè)務(wù)文件,還可以進一步增加備份邏輯,把原文件復(fù)制一份后再處理。這樣即使規(guī)則寫錯,也能快速回退。

9. 總結(jié)提升:把小案例沉淀成自己的腳本思維

這一節(jié)表面上是在學(xué)習(xí) replace() 和工作表重命名,本質(zhì)上是在訓(xùn)練一種辦公自動化思維:把人工重復(fù)操作抽象成對象、規(guī)則和循環(huán)。

對象是工作表,規(guī)則是名稱替換,循環(huán)是逐張?zhí)幚?。只要這個思路掌握了,后面處理批量改文件名、批量改單元格內(nèi)容、批量匯總多個工作簿,邏輯其實都是相通的。

不要只滿足于“代碼能跑”。真正有價值的自動化腳本,應(yīng)該具備可驗證、可回退、可復(fù)用的能力。尤其是涉及 Excel 文件修改時,腳本執(zhí)行前要確認(rèn)規(guī)則,執(zhí)行中要有日志,執(zhí)行后要檢查結(jié)果。

我對這一節(jié)的理解是:批量重命名工作表不是一個孤立技巧,而是 Python 辦公自動化中非常基礎(chǔ)的能力模塊。把這個模塊寫穩(wěn),后面很多 Excel 批處理任務(wù)都會更容易上手。

以上就是Python批量重命名Excel工作表的示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Python重命名Excel工作表的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python爬蟲之爬取嗶哩嗶哩熱門視頻排行榜

    Python爬蟲之爬取嗶哩嗶哩熱門視頻排行榜

    這篇文章主要介紹了Python爬蟲之爬取嗶哩嗶哩熱門視頻排行榜,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • Python 利用base64庫 解碼本地txt文本字符串

    Python 利用base64庫 解碼本地txt文本字符串

    這篇文章主要介紹了Python 利用base64庫 解碼本地txt文本字符串的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Python腳本實現(xiàn)依賴漏洞自動掃描工具

    Python腳本實現(xiàn)依賴漏洞自動掃描工具

    這篇文章主要為大家詳細(xì)介紹了如何通過Python腳本實現(xiàn)一個依賴漏洞自動掃描工具,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2026-03-03
  • 深人了解Python上下文管理器

    深人了解Python上下文管理器

    這篇文章主要為大家介紹了Python上下文管理器,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助<BR>
    2021-12-12
  • Python isinstance判斷對象類型

    Python isinstance判斷對象類型

    Python中判度對象類型方法非常簡單,不需要像別的語言一樣使用如下的判斷方法
    2008-09-09
  • Python實現(xiàn)高效迭代固定大小記錄的專業(yè)指南

    Python實現(xiàn)高效迭代固定大小記錄的專業(yè)指南

    在數(shù)據(jù)處理、文件解析和網(wǎng)絡(luò)編程中,我們經(jīng)常需要處理由固定長度記錄組成的數(shù)據(jù)塊,本文將詳細(xì)介紹一下Python如何實現(xiàn)高效迭代固定大小記錄,有需要的小伙伴可以了解下
    2025-09-09
  • 全面了解python中的類,對象,方法,屬性

    全面了解python中的類,對象,方法,屬性

    下面小編就為大家?guī)硪黄媪私鈖ython中的類,對象,方法,屬性。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • Python輕松實現(xiàn)Word文檔對比并生成可視化HTML報告

    Python輕松實現(xiàn)Word文檔對比并生成可視化HTML報告

    在日常工作和學(xué)習(xí)中,我們經(jīng)常需要對兩個版本的文檔進行比對,本文將使用 Python + python-docx + difflib 實現(xiàn)一個自動化 Word 文檔對比工具,感興趣的可以了解下
    2025-08-08
  • np.zeros()函數(shù)的使用方法

    np.zeros()函數(shù)的使用方法

    本文主要介紹了np.zeros()函數(shù)的使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Python實現(xiàn)郵件發(fā)送功能的方法詳解

    Python實現(xiàn)郵件發(fā)送功能的方法詳解

    本文將學(xué)會各種類型的郵件發(fā)送方式,比如普通文本郵件、帶附件的郵件等等,如何通過程序發(fā)送郵件現(xiàn)在我們還不太了解,接下來就會為大家進行詳細(xì)的介紹
    2022-05-05

最新評論

昌宁县| 三台县| 彭阳县| 芒康县| 忻州市| 沂源县| 磐石市| 九台市| 辽阳县| 廊坊市| 阿巴嘎旗| 伊宁市| 九寨沟县| 津南区| 江津市| 那坡县| 房山区| 石渠县| 江山市| 新营市| 阿克| 高雄县| 宜宾县| 炎陵县| 新和县| 临高县| 赫章县| 双牌县| 墨江| 海口市| 水富县| 宿迁市| 石嘴山市| 聊城市| 西乌珠穆沁旗| 股票| 弥勒县| 明星| 东光县| 黄骅市| 临汾市|