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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

下面這段代碼使用 xlwings 作為示例。它的好處是比較貼近真實(shí) 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 兩個變量。雖然直接寫一行也能實(shí)現(xiàn),但在實(shí)際排錯時(shí),保留變量更容易打印日志,也更容易判斷腳本到底修改了哪些工作表。

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

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

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

5. 進(jìn)階用法:只重命名部分工作表

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

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

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

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

如果只想處理第 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("銷售", "")

實(shí)際使用時(shí)我更推薦條件判斷。因?yàn)樗灰蕾嚬ぷ鞅砦恢茫灰蕾嚸Q規(guī)則。只要命名規(guī)范穩(wěn)定,條件判斷就比固定序號更可靠。

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

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

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

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

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

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

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

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

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

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

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

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

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

  如果要進(jìn)一步增強(qiáng)穩(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. 完整增強(qiáng)版代碼:增加校驗(yàn)和日志輸出

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

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} 校驗(yàn)失?。簕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ǔ)版更啰嗦,但更適合真實(shí)工作。因?yàn)樗壬芍孛?jì)劃,檢查沒有問題之后才真正執(zhí)行修改。這就是自動化腳本里很重要的思想:先預(yù)演,再執(zhí)行。

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

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

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

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

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

我對這一節(jié)的理解是:批量重命名工作表不是一個孤立技巧,而是 Python 辦公自動化中非?;A(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文本字符串的操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Python腳本實(shí)現(xiàn)依賴漏洞自動掃描工具

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

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

    深人了解Python上下文管理器

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

    Python isinstance判斷對象類型

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

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

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

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

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

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

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

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

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

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

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

最新評論

新绛县| 林州市| 赣榆县| 隆安县| 宁波市| 白城市| 枣庄市| 梁山县| 新密市| 嘉祥县| 项城市| 镇江市| 法库县| 正蓝旗| 荃湾区| 宕昌县| 科尔| 天水市| 苏州市| 内丘县| 长乐市| 双牌县| 庆城县| 嘉兴市| 贡嘎县| 安吉县| 尼木县| 盱眙县| 建水县| 开原市| 广元市| 盘山县| 阳城县| 东明县| 龙南县| 紫云| 砚山县| 江西省| 资中县| 高阳县| 浮梁县|