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

Python批量實現(xiàn)更改Excel中多個工作簿的數(shù)據(jù)格式

 更新時間:2026年07月01日 09:13:14   作者:楊利杰YJlio  
本文介紹了使用Python批量處理多個Excel工作簿數(shù)據(jù)格式的方法,通過自遍歷文件夾、動態(tài)獲取數(shù)據(jù)末行與設置number_format,實現(xiàn)多個工作簿的格式統(tǒng)一,提升報表專業(yè)度與匯總效率

1. 問題背景:為什么要批量更改多個工作簿的數(shù)據(jù)格式

本文主題是:批量更改多個工作簿的數(shù)據(jù)格式。這類需求在真實辦公場景里很常見,尤其是多個部門、多個區(qū)域、多個項目分別提交 Excel 報表時,數(shù)據(jù)內容可能是對的,但顯示格式經(jīng)常不統(tǒng)一。

比如日期列里有的顯示為 2026/1/1,有的顯示為 2026-01-01,還有的顯示為 1 Jan 2026;金額列里有的沒有千分位,有的保留一位小數(shù),有的又帶貨幣符號;百分比列里有的顯示為 0.1234,有的顯示為 12.34%。這些問題單看一個文件不嚴重,但如果幾十個工作簿都這樣,后續(xù)匯總、審核和展示都會很難看。

推薦做法是:把這種“格式規(guī)則明確、處理文件數(shù)量多、人工統(tǒng)一成本高”的工作交給 Python 批量處理。人負責確定格式標準,腳本負責逐個打開工作簿、定位數(shù)據(jù)區(qū)域、設置顯示格式、保存結果。

這張圖展示的是本文的整體目標:用 Python + Excel 自動化,將多個工作簿中的日期、金額、百分比等數(shù)據(jù)格式一次性統(tǒng)一。

從圖中可以看出,本文關注的不是單個單元格的手動格式調整,而是批量處理多個工作簿的數(shù)據(jù)格式標準化。這也是辦公自動化真正有價值的地方:不是替代一次點擊,而是把大量重復點擊變成穩(wěn)定規(guī)則。

2. 應用場景:哪些格式問題適合用 Python 批量處理

這個案例適合處理三類典型問題:日期格式統(tǒng)一、金額格式統(tǒng)一、百分比格式統(tǒng)一。只要這些列的位置相對固定,或者可以通過表頭定位,就可以通過腳本批量設置顯示格式。

在公司報表里,數(shù)據(jù)格式不統(tǒng)一經(jīng)常不是因為員工不會填,而是來源系統(tǒng)不同、復制粘貼習慣不同、Excel 自動識別規(guī)則不同。最后造成一個結果:表面上都是“日期”“金額”“百分比”,實際展示出來卻很混亂。

這里要先明確一個邊界:number_format 主要控制的是 Excel 的顯示格式,它不等于數(shù)據(jù)清洗。也就是說,如果一個單元格本質上是文本,單純設置 number_format 不一定能把它變成真正的日期或數(shù)字。

這張圖展示的是批量統(tǒng)一數(shù)據(jù)格式的應用場景,包括日期格式、金額格式、百分比格式,以及多個報表工作簿的批量處理。

從圖中可以看出,批量改格式適合解決“顯示不統(tǒng)一”的問題。比如把 2026/1/1 統(tǒng)一顯示為 2026-01-01,把 1234567 統(tǒng)一顯示為 1,234,567.00,把 0.1234 統(tǒng)一顯示為 12.34%。這些處理能明顯提升報表規(guī)范性,也能減少人工校對成本。

3. 核心原理:動態(tài)找末行,再設置 number_format

這一節(jié)的核心不是“給某個單元格設置格式”,而是對多個工作簿中的指定數(shù)據(jù)區(qū)域批量設置格式。所以代碼要解決兩個關鍵問題:第一,怎么找到每個文件的數(shù)據(jù)區(qū)域;第二,怎么給不同列設置不同的顯示格式。

核心思路可以拆成四步:先遍歷目標文件夾,找到所有需要處理的 Excel 文件;再打開每個工作簿并定位目標工作表;然后通過 current_region.last_cell.row 動態(tài)獲取數(shù)據(jù)末行;最后對日期列、金額列、百分比列分別設置 number_format 并保存。

這張圖展示的是批量更改多個工作簿數(shù)據(jù)格式的核心流程:讀取文件、定位工作表、動態(tài)獲取末行、設置格式并保存。

從圖中可以看出,流程里最關鍵的一步是動態(tài)獲取末行。如果把范圍寫死為 A2:A10000,短表會處理多余空白,長表又可能漏數(shù)據(jù)。用動態(tài)末行可以讓腳本適應不同工作簿的數(shù)據(jù)量。

4. 實現(xiàn)代碼:批量更改日期、金額、百分比格式

下面這份代碼假設第 1 行是表頭,A 列是日期,B 列是金額,C 列是百分比。腳本會從目標文件夾中遍歷所有 Excel 文件,并批量設置這三列的數(shù)據(jù)格式。

import os
import xlwings as xw

# ====== 需要根據(jù)實際情況修改的參數(shù) ======
folder_path = r"e:\file\target"   # 多個 Excel 文件所在文件夾
sheet_name = "Sheet1"             # 需要處理的工作表名稱
# ======================================

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

try:
    for file in os.listdir(folder_path):

        # 跳過 Excel 臨時文件
        if file.startswith("~$"):
            continue

        # 只處理 Excel 文件
        if not file.lower().endswith((".xlsx", ".xls", ".xlsm")):
            continue

        full_path = os.path.join(folder_path, file)
        wb = None

        try:
            wb = app.books.open(full_path)

            # 如果目標工作表不存在,則跳過當前文件
            sheet_names = [s.name for s in wb.sheets]
            if sheet_name not in sheet_names:
                print(f"跳過:{file},不存在工作表:{sheet_name}")
                continue

            sht = wb.sheets[sheet_name]

            # 動態(tài)獲取末行:以 A1 為起點識別連續(xù)數(shù)據(jù)區(qū)域
            last_row = sht.range("A1").current_region.last_cell.row

            # 如果只有表頭,沒有數(shù)據(jù),則跳過
            if last_row < 2:
                print(f"跳過:{file},沒有有效數(shù)據(jù)")
                continue

            # 構造動態(tài)區(qū)域
            rng_date = sht.range(f"A2:A{last_row}")
            rng_amount = sht.range(f"B2:B{last_row}")
            rng_rate = sht.range(f"C2:C{last_row}")

            # 設置顯示格式
            rng_date.number_format = "yyyy-mm-dd"
            rng_amount.number_format = "#,##0.00"
            rng_rate.number_format = "0.00%"

            wb.save()
            print(f"已更改數(shù)據(jù)格式:{file},末行:{last_row}")

        finally:
            if wb is not None:
                wb.close()

finally:
    app.quit()

這份腳本比最簡單版本多了幾個保護動作:跳過 ~$ 臨時文件、判斷工作表是否存在、判斷是否有有效數(shù)據(jù)、用 try/finally 確保工作簿關閉。這些細節(jié)看起來不顯眼,但對批量處理非常重要。

如果是正式處理業(yè)務文件,建議先復制一份測試目錄,再運行腳本。格式類操作雖然一般不會刪除數(shù)據(jù),但一旦批量改錯,返工也很麻煩。

5. 關鍵代碼邏輯:current_region、last_row 與 number_format

這段代碼最關鍵的不是 for 循環(huán),而是下面這句:

last_row = sht.range("A1").current_region.last_cell.row

它的含義是:從 A1 出發(fā),識別當前連續(xù)數(shù)據(jù)區(qū)域,然后取這個區(qū)域最后一個單元格所在的行號。這樣就可以得到當前工作表的實際數(shù)據(jù)末行。

有了 last_row 之后,就能動態(tài)構造區(qū)域:

rng_date = sht.range(f"A2:A{last_row}")
rng_amount = sht.range(f"B2:B{last_row}")
rng_rate = sht.range(f"C2:C{last_row}")

最后再分別設置顯示格式:

rng_date.number_format = "yyyy-mm-dd"
rng_amount.number_format = "#,##0.00"
rng_rate.number_format = "0.00%"

這張圖展示的是關鍵代碼邏輯:動態(tài)找末行、設置 number_format,并強調格式設置只影響顯示,不直接改變底層數(shù)值。

從圖中可以看出,number_format 的價值在于統(tǒng)一顯示規(guī)則。日期列顯示為 yyyy-mm-dd,金額列顯示為 #,##0.00,百分比列顯示為 0.00%。但這里必須記?。簄umber_format 不是萬能的數(shù)據(jù)轉換工具,它主要控制顯示格式,不負責把文本徹底清洗成真實日期或真實數(shù)字。

6. 操作步驟:先小范圍驗證,再批量執(zhí)行

這類腳本不要一上來就直接跑正式目錄。更穩(wěn)的做法是先準備 2 到 3 個測試工作簿,確認格式效果正確,再擴大到完整文件夾。

第一步,確認目標文件夾。把需要處理的 Excel 文件放在同一個目錄中,避免混入無關文件。對于 Excel 自動生成的臨時文件,腳本中已經(jīng)用 file.startswith("~$") 跳過。

第二步,確認目標工作表名稱。示例代碼里使用的是 Sheet1,實際工作中可能是 銷售明細、數(shù)據(jù)表、報表。名稱不一致時,腳本會跳過該文件。

第三步,確認列規(guī)則。示例中默認 A 列是日期、B 列是金額、C 列是百分比。如果你的表結構不同,必須修改對應列區(qū)域,不能機械照抄。

第四步,小范圍運行并檢查結果。重點看日期、金額、百分比是否顯示正確,是否存在文本無法格式化的問題。

我的建議是:批量處理前先打印文件名和末行,確認腳本識別的目標范圍是否符合預期。

print(f"當前文件:{file}")
print(f"識別到的數(shù)據(jù)末行:{last_row}")

日志越清楚,排錯越省時間。尤其是處理多個工作簿時,一旦某個文件結構異常,日志可以快速告訴你問題發(fā)生在哪一個文件。

7. 知識延伸:批量設置外觀格式

數(shù)據(jù)格式統(tǒng)一只是第一步。很多公司報表還要求表頭加粗、居中、底色統(tǒng)一、正文自動換行、邊框規(guī)范。對于這類外觀格式,xlwings 也可以通過 .api 調用 Excel 的底層屬性。

# 假設已經(jīng)獲取 sht 和 last_row

# 1. 設置表頭格式
header_rng = sht.range("A1:C1")
header_rng.api.Font.Bold = True
header_rng.api.HorizontalAlignment = -4108   # 居中
header_rng.api.VerticalAlignment = -4108     # 垂直居中
header_rng.color = (217, 217, 217)           # 淺灰色底色

# 2. 設置正文格式
body_rng = sht.range(f"A2:C{last_row}")
body_rng.api.Font.Name = "微軟雅黑"
body_rng.api.Font.Size = 10
body_rng.api.HorizontalAlignment = -4131     # 左對齊
body_rng.api.WrapText = True                 # 自動換行

# 3. 設置邊框
body_rng.api.Borders.Weight = 2

.api 的作用可以理解為:直接調用 Excel COM 對象的能力。它比普通屬性更底層,也更接近 Excel 原生功能,適合處理字體、邊框、對齊、顏色這類外觀細節(jié)。

但要注意:外觀格式越復雜,腳本越容易和不同電腦上的 Excel 環(huán)境、字體環(huán)境、區(qū)域設置產生差異。正式批量處理前,最好先在幾臺典型電腦上驗證效果。

8. 常見問題:批量改格式前后必須檢查

批量改格式最容易讓人誤判。很多時候腳本沒有報錯,但結果并不一定符合預期。尤其是 current_region、文本日期、文本數(shù)字這些問題,如果不提前理解,后面會踩坑。

這張圖展示的是批量改格式前后最需要檢查的幾個點:跳過臨時文件、檢查空行、確認真實數(shù)據(jù)類型、驗證最終結果。

從圖中可以看出,~$ 開頭的 Excel 臨時文件要跳過;如果數(shù)據(jù)區(qū)域中間有整行空行,current_region 可能提前結束;如果日期和數(shù)字本質上是文本,單純設置 number_format 可能只改變顯示規(guī)則,不能完成真實數(shù)據(jù)類型轉換。

最危險的誤區(qū)是:看到單元格“長得像日期”或者“長得像數(shù)字”,就以為它已經(jīng)是真實日期或真實數(shù)字。Excel 里顯示像,不代表類型對。后續(xù)如果要參與公式計算或匯總統(tǒng)計,就必須進一步確認數(shù)據(jù)類型。

如果懷疑某一列是文本數(shù)字,可以先通過 Excel 現(xiàn)象判斷:單元格左上角是否有綠色提示,求和結果是否異常,排序是否按文本順序排列。也可以在腳本里加入更嚴格的數(shù)據(jù)清洗邏輯,但那已經(jīng)超出單純 number_format 的范圍。

9. 效果驗證:用腳本檢查格式是否生效

批量處理之后,建議至少抽查幾個文件。更穩(wěn)一點的做法,是寫一個驗證腳本,把目標區(qū)域的 number_format 打印出來,確認格式是否真的寫入。

import os
import xlwings as xw

folder_path = r"e:\file\target"
sheet_name = "Sheet1"

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

try:
    for file in os.listdir(folder_path):

        if file.startswith("~$"):
            continue

        if not file.lower().endswith((".xlsx", ".xls", ".xlsm")):
            continue

        full_path = os.path.join(folder_path, file)
        wb = None

        try:
            wb = app.books.open(full_path)

            if sheet_name not in [s.name for s in wb.sheets]:
                print(f"跳過:{file},不存在工作表:{sheet_name}")
                continue

            sht = wb.sheets[sheet_name]

            print(f"文件:{file}")
            print("A2 日期格式:", sht.range("A2").number_format)
            print("B2 金額格式:", sht.range("B2").number_format)
            print("C2 百分比格式:", sht.range("C2").number_format)
            print("-" * 40)

        finally:
            if wb is not None:
                wb.close()

finally:
    app.quit()

這個驗證腳本不修改文件,只讀取格式結果。對于批量處理任務來說,驗證腳本和處理腳本一樣重要。只會批量執(zhí)行,不會驗證結果,自動化就還不夠可靠。

10. 總結提升:格式統(tǒng)一背后是報表標準化能力

這一節(jié)表面上是在學習 number_format,實際是在訓練一種很重要的辦公自動化能力:批量統(tǒng)一多個工作簿的報表標準。這類能力在真實辦公里很有用,因為很多報表問題不是數(shù)據(jù)本身錯,而是格式混亂導致閱讀、匯總和審核成本變高。

這一節(jié)我重點掌握了四個點:用 os.listdir() 遍歷文件夾;用 current_region.last_cell.row 動態(tài)獲取末行;用 number_format 設置日期、金額、百分比顯示格式;最后通過驗證腳本檢查格式是否真正生效。

不要把“格式統(tǒng)一”看成簡單美化。在正式報表里,格式規(guī)范就是數(shù)據(jù)質量的一部分。日期格式不統(tǒng)一、金額顯示不規(guī)范、百分比小數(shù)位混亂,都會影響別人對報表專業(yè)度的判斷。

我對這一節(jié)的理解是:Python 做 Excel 自動化,不只是為了少點幾下鼠標,更重要的是把報表處理規(guī)則固化下來。只要規(guī)則穩(wěn)定,腳本就能重復執(zhí)行;只要腳本可驗證,這套流程就能沉淀成真正可復用的辦公工具。

以上就是Python批量實現(xiàn)更改Excel中多個工作簿的數(shù)據(jù)格式的詳細內容,更多關于Python批量更改Excel數(shù)據(jù)格式的資料請關注腳本之家其它相關文章!

相關文章

  • Python中使用 Selenium 實現(xiàn)網(wǎng)頁截圖實例

    Python中使用 Selenium 實現(xiàn)網(wǎng)頁截圖實例

    這篇文章主要介紹了Python中使用 Selenium 實現(xiàn)網(wǎng)頁截圖實例,Selenium支持Java、C#、Ruby 以及 Python等語言,本文以Python語言為例,需要的朋友可以參考下
    2014-07-07
  • 一文帶你搞懂Python?FastAPI中所有核心參數(shù)的設置

    一文帶你搞懂Python?FastAPI中所有核心參數(shù)的設置

    本文帶你一次搞懂?FastAPI?中的所有核心參數(shù)類型,從簡單的查詢字符串,再到處理復雜?JSON?或表單數(shù)據(jù)的請求體,感興趣的小伙伴可以了解下
    2025-12-12
  • Python爬蟲實現(xiàn)簡單的爬取有道翻譯功能示例

    Python爬蟲實現(xiàn)簡單的爬取有道翻譯功能示例

    這篇文章主要介紹了Python爬蟲實現(xiàn)簡單的爬取有道翻譯功能,結合實例形式分析了Python基于urllib庫實現(xiàn)的爬蟲爬取有道翻譯相關定義與數(shù)據(jù)交互功能操作技巧,需要的朋友可以參考下
    2018-07-07
  • Python文件處理的魔法之旅

    Python文件處理的魔法之旅

    Python文件處理在數(shù)據(jù)持久化、配置管理和日志記錄方面發(fā)揮著至關重要的作用,通過學習如何讀取、寫入和修改文件,開發(fā)者可以更加高效地處理各種數(shù)據(jù)和配置文件,需要的朋友可以參考下
    2024-11-11
  • Python內置模塊Collections的使用教程詳解

    Python內置模塊Collections的使用教程詳解

    collections 是 Python 的一個內置模塊,所謂內置模塊的意思是指 Python 內部封裝好的模塊,無需安裝即可直接使用。本文將詳解介紹Collections的使用方式,需要的可以參考一下
    2022-03-03
  • Python-GUI?wxPython之自動化數(shù)據(jù)生成器的項目實戰(zhàn)

    Python-GUI?wxPython之自動化數(shù)據(jù)生成器的項目實戰(zhàn)

    本文主要介紹了Python-GUI?wxPython之自動化數(shù)據(jù)生成器實戰(zhàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-05-05
  • 從列表到生成器詳解Python可迭代對象的完全指南

    從列表到生成器詳解Python可迭代對象的完全指南

    可迭代對象是?Python?中非常重要的概念,列表、元組、字符串、字典、集合等都是可迭代對象,本文詳細介紹了可迭代對象和迭代器的區(qū)別,以及如何創(chuàng)建它們,希望對大家有所幫助
    2026-04-04
  • python爬蟲之生活常識解答機器人

    python爬蟲之生活常識解答機器人

    這篇文章主要介紹了python爬蟲之生活常識解答機器人,文中有非常詳細的代碼示例,對正在學習python的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • 使用Python操作Redis的完整指南

    使用Python操作Redis的完整指南

    Redis作為業(yè)界主流的內存數(shù)據(jù)庫,配合Python的redis-py庫,能在不改變業(yè)務代碼結構的前提下,把數(shù)據(jù)庫的查詢壓力降低90%以上,今天我們就從零開始,聊聊怎么用Python操作Redis,搭一套真正能打的緩存系統(tǒng),需要的朋友可以參考下
    2026-03-03
  • Django 前后臺的數(shù)據(jù)傳遞的方法

    Django 前后臺的數(shù)據(jù)傳遞的方法

    本篇文章主要介紹了Django 前后臺的數(shù)據(jù)傳遞的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08

最新評論

松原市| 云浮市| 大名县| 武平县| 吉安县| 德庆县| 孟津县| 甘南县| 子长县| 舒城县| 碌曲县| 潮安县| 基隆市| 焦作市| 大姚县| 陆丰市| 佛坪县| 富源县| 当雄县| 佛山市| 岫岩| 静安区| 肇东市| 长春市| 岫岩| 潞城市| 石阡县| 汉中市| 中西区| 兰州市| 高清| 宣威市| 襄樊市| 徐闻县| 临桂县| 舞钢市| 通化市| 绥棱县| 平利县| 濮阳市| 海晏县|