动态

详情 返回 返回

使用 Python 刪除 Excel 單元格公式並保留數值 - 动态 详情

在日常業務中,我們經常會遇到含有大量公式的 Excel 文件。例如財務報表、銷售數據分析表、項目預算表等。這些公式在計算時非常有用,但有時我們希望將公式“去掉”,只保留最終的計算結果。原因可能包括:

  • 數據歸檔:保存最終結果,避免後續公式被誤改。
  • 共享報表:發給不熟悉 Excel 的人時,避免因公式丟失數據或出錯。
  • 性能優化:當 Excel 文件公式過多時,計算速度會變慢,轉化為純數值可提升加載效率。

手動操作時,通常做法是複製並“粘貼為值”。本文將介紹如何使用 Free Spire.XLS for Python 在代碼中自動完成這一過程,並結合代碼邏輯詳細解析。

通過pip安裝:

pip install spire.xls.free

1. 初始化工作簿並加載文件

from spire.xls import Workbook, ExcelClearOptions

# 加載 Excel 文件
wb = Workbook()
wb.LoadFromFile("Sample.xlsx")
sheet = wb.Worksheets.get_Item(0)

説明
這裏首先創建了 Workbook 對象並加載本地文件 Sample.xlsx,然後獲取第一個工作表進行處理。實際業務中,你可以根據文件路徑和工作表名稱來靈活選擇目標。


2. 遍歷單元格並判斷是否包含公式並處理

for row in range(sheet.Rows.Count):
    for col in range(sheet.Columns.Count):
        cell = sheet.Range.get_Item(row + 1, col + 1)
        if cell.HasFormula:
            value = cell.FormulaValue
            cell.Clear(ExcelClearOptions.ClearContent)
            cell.Value = value

關鍵步驟解析

  • 遍歷所有單元格:通過 sheet.Rows.Countsheet.Columns.Count 獲取行列總數,循環檢查。
  • 判斷公式cell.HasFormula 屬性用於判斷該單元格是否含有公式。
  • 獲取公式結果cell.FormulaValue 返回公式計算後的數值。
  • 清除原公式cell.Clear(ExcelClearOptions.ClearContent) 會清除內容(包括公式),但保留單元格的格式。
  • 寫入結果值cell.Value = value 將公式的計算結果寫回單元格,實現“公式轉數值”。

這樣處理後,Excel 中的公式將被替換為靜態數據。


3. 保存處理後的文件

wb.SaveToFile("output/remove_formulas.xlsx")

説明
處理完成後,將文件另存為 output/remove_formulas.xlsx,以免覆蓋原始數據。建議在實際工作中也保留原文件,以便追溯。

移除效果展示:

Python移除Excel單元格公式保留數值


4. 擴展説明

(1)為什麼不直接複製粘貼?

雖然 Excel 界面中“複製 → 粘貼為值”很快,但對於幾十個甚至上百個文件的批量處理,手動操作效率極低。而使用 Python 自動化,可以批量處理文件夾下所有 Excel 文件,幾分鐘即可完成。

(2)保留格式的重要性

有些場景下,表格中含有複雜的單元格格式(字體、邊框、底色等),如果直接刪除單元格內容,可能會破壞表格美觀。使用上述方法可以確保只刪除公式,不影響格式,非常適合業務報表。

(3)與只讀報表結合

在企業應用中,常見做法是:

  • 第一步:在開發環境使用公式計算數據;
  • 第二步:通過腳本批量去除公式,生成靜態報表;
  • 第三步:將靜態報表分發給業務部門或客户。

這樣既保證了計算的準確性,也避免了誤操作風險。


關鍵類與屬性總結

類 / 屬性 / 方法 説明
Workbook 表示 Excel 工作簿,支持加載、保存等操作
Workbook.LoadFromFile() 從文件加載 Excel
Workbook.SaveToFile() 保存 Excel 文件
Worksheet 表示單個工作表,所有數據都在此操作
sheet.Rows.Count 獲取工作表總行數
sheet.Columns.Count 獲取工作表總列數
Range 表示單元格或區域
Range.get_Item(row, col) 根據行列索引獲取單元格(索引從 1 開始)
Range.HasFormula 判斷單元格是否含有公式
Range.FormulaValue 獲取公式計算後的數值
Range.Clear(ExcelClearOptions) 按指定選項清除單元格內容(如內容、格式等)
Range.Value 設置或獲取單元格的文本/數值內容
ExcelClearOptions.ClearContent 清除單元格內容但保留格式

總結

本文演示瞭如何使用 Spire.XLS for Python 刪除 Excel 文件中的公式並保留其計算結果。與手動操作相比,代碼實現不僅更高效,而且可批量處理多個文件,非常適合財務、統計、數據歸檔等業務場景。

通過掌握 WorkbookWorksheetRange 以及 HasFormulaFormulaValue 等核心屬性方法,你可以輕鬆實現 Excel 自動化處理,減少重複勞動,提升工作效率。

user avatar onlookee 头像 aoshizhongshengdeyadan_wcyg0 头像 refanbanzhang 头像
点赞 3 用户, 点赞了这篇动态!
点赞

Add a new 评论

Some HTML is okay.