使用Python删除Excel单元格公式并保留数值

 更新时间:2025年11月28日 09:16:30   作者:大丸子  
在日常业务中,我们经常会遇到含有大量公式的 Excel 文件,例如财务报表、销售数据分析表、项目预算表等,这些公式在计算时非常有用,但有时我们希望将公式去掉,只保留最终的计算结果,本文将介绍如何使用Python自动完成这一过程,需要的朋友可以参考下

在日常业务中,我们经常会遇到含有大量公式的 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.Count 和 sheet.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,以免覆盖原始数据。建议在实际工作中也保留原文件,以便追溯。

移除效果展示:

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 自动化处理,减少重复劳动,提升工作效率。

以上就是使用Python删除Excel单元格公式并保留数值的详细内容,更多关于Python删除Excel单元格的资料请关注脚本之家其它相关文章!

相关文章

  • 下载官网python并安装的步骤详解

    下载官网python并安装的步骤详解

    在本篇文章里小编给大家整理了关于下载官网python并安装的步骤详解,需要的朋友们参考学习下。
    2019-10-10
  • Python实现数据库表的监控警告的项目实践

    Python实现数据库表的监控警告的项目实践

    本文主要介绍了使用Python 实现对数据库表的监控告警功能, 并将告警信息通过钉钉机器人发送到钉钉群,具有一定的参考价值,感兴趣的可以了解一下
    2024-05-05
  • python字典中items()函数用法实例

    python字典中items()函数用法实例

    Python字典items()函数作用以列表返回可遍历的(键, 值)元组数组,下面这篇文章主要给大家介绍了关于python字典中items()函数用法的相关资料,需要的朋友可以参考下
    2022-11-11
  • 深入详解Python中动态方法调用的各种方法

    深入详解Python中动态方法调用的各种方法

    在Python编程中,我们经常会遇到需要根据​​运行时条件​​动态调用对象方法的场景,本文将深入探讨Python中动态方法调用的各种技术,感兴趣的小伙伴可以了解下
    2025-10-10
  • Python做文本按行去重的实现方法

    Python做文本按行去重的实现方法

    每行在promotion后面包含一些数字,如果这些数字是相同的,则认为是相同的行,对于相同的行,只保留一行。接下来通过本文给大家介绍Python做文本按行去重的实现方法,感兴趣的朋友一起看看吧
    2016-10-10
  • Python移动测试开发subprocess模块项目实战

    Python移动测试开发subprocess模块项目实战

    这篇文章主要为大家介绍了Python移动测试开发subprocess模块项目实战示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • 基于Python实现拉格朗日插值法

    基于Python实现拉格朗日插值法

    拉格朗日插值法是以法国十八世纪数学家约瑟夫·拉格朗日命名的一种多项式插值方法。本文将利用Python语言实现这一插值法,需要的可以参考一下
    2022-12-12
  • Python调用SQLPlus来操作和解析Oracle数据库的方法

    Python调用SQLPlus来操作和解析Oracle数据库的方法

    这篇文章主要介绍了Python调用SQLPlus来操作和解析Oracle数据库的方法,这样用SQL*Plus方式来分析Oracle中的数据就变得十分方便,需要的朋友可以参考下
    2016-04-04
  • Python合并字符串的3种方法

    Python合并字符串的3种方法

    这篇文章主要介绍了Python合并字符串的3种方法,本文讲解了使用+=操作符、使用%操作符、使用String的' '.join()方法3种方法,需要的朋友可以参考下
    2015-05-05
  • 基于Django模板中的数字自增(详解)

    基于Django模板中的数字自增(详解)

    下面小编就为大家带来一篇基于Django模板中的数字自增(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09

最新评论