查看: 133|回复: 3

Python + Spire.XLS实现Excel一键批量查找替换与条件修改

[复制链接]
发表于 2 小时前 | 显示全部楼层 |阅读模式
在日常数据处理中,Excel 查找替换是高频操作,但当数据量较大或需要定期执行时,手动操作容易出错且效率低下。借助 Python 和免费库 Free Spire.XLS for Python,可以编程方式实现批量查找替换,无需安装 Microsoft Office。本文通过三个场景演示全表替换、区域限定替换以及基于条件的智能替换。

环境安装
通过 pip 安装 Spire.XLS.Free 库:
  1. pip install Spire.XLS.Free
复制代码

核心对象
程序主要操作两个对象:
- Workbook:代表整个工作簿,负责加载与保存文件
- Worksheet:代表单个工作表,提供单元格查找与替换能力

导入方式:
  1. from spire.xls import *
  2. from spire.xls.common import *
复制代码

场景一:全工作表中查找并替换文本
使用 Worksheet.FindAllString() 方法查找所有包含指定字符串的单元格,并替换为新文本。该方法接受三个参数:查找内容、是否区分大小写(True 为区分)、是否完全匹配(True 为精确匹配)。

以下示例将工作表中所有“总数”替换为“合计金额”,并用黄色背景标记修改的单元格:
  1. workbook = Workbook()
  2. workbook.LoadFromFile("数据.xlsx")
  3. worksheet = workbook.Worksheets[0]
  4. ranges = worksheet.FindAllString("总数", False, False)
  5. for range in ranges:
  6.     range.Text = "合计金额"
  7.     range.Style.Color = Color.get_Yellow()
  8. workbook.SaveToFile("替换结果.xlsx", ExcelVersion.Version2016)
  9. workbook.Dispose()
复制代码

场景二:限定单元格区域内查找替换
当工作表数据量大或只需修改特定区域时,先获取 CellRange 对象,再调用其 FindAllString() 方法,可提升效率和准确性。

以下示例仅在 A6:C13 区域内查找“总数”并替换:
  1. workbook = Workbook()
  2. workbook.LoadFromFile("数据.xlsx")
  3. sheet = workbook.Worksheets[0]
  4. range = sheet.Range["A6:C13"]
  5. cells = range.FindAllString("总数", False, False)
  6. for cell in cells:
  7.     cell.Text = "合计金额"
  8.     cell.Style.Color = Color.get_Yellow()
  9. workbook.SaveToFile("区域替换结果.xlsx", ExcelVersion.Version2016)
  10. workbook.Dispose()
复制代码

场景三:查找后执行条件替换
实际业务常需要根据单元格原始内容动态生成新值。例如将销售额单位从“元”转为“万元”,提取数字并除以10000:
  1. workbook = Workbook()
  2. workbook.LoadFromFile("销售数据.xlsx")
  3. worksheet = workbook.Worksheets[0]
  4. ranges = worksheet.FindAllString("元", False, False)
  5. for range in ranges:
  6.     original = range.Text
  7.     try:
  8.         num = float(original.replace("元", ""))
  9.         range.Text = f"{num / 10000:.2f}万元"
  10.     except:
  11.         pass
  12. workbook.SaveToFile("条件替换结果.xlsx", ExcelVersion.Version2016)
  13. workbook.Dispose()
复制代码

总结
上述三个示例覆盖了从整表替换到区域限制、条件修改的常见需求。开发者可将其集成到自动报表生成、数据清洗脚本中,将重复性人工操作转化为自动化流程。所有代码均基于 Free Spire.XLS for Python,无需额外授权。
回复

使用道具 举报

发表于 2 小时前 | 显示全部楼层

Re: Python + Spire.XLS实现Excel一键批量查找替换与条件修改

感谢分享,这三个场景非常实用,特别是“区域限定”和“条件替换”能解决很多实际工作中的痛点。之前手动替换容易遗漏,用代码确实高效又准确。有机会可以试试在循环里加上异常处理,避免非数字格式报错后中断整个流程——不过你已经在示例里用 try/except 处理了,很周到。
回复 支持 反对

使用道具 举报

发表于 2 小时前 | 显示全部楼层

Re: Python + Spire.XLS实现Excel一键批量查找替换与条件修改

感谢分享!这三个场景很实用,尤其是条件替换那部分,把“元”转为“万元”的示例很符合实际业务需求。我之前用VBA做类似操作,但用Python确实更灵活,而且不用装Office。请问如果需要对多个工作表同时进行查找替换,Workbook对象有没有类似循环遍历所有工作表的方法?
回复 支持 反对

使用道具 举报

发表于 2 小时前 | 显示全部楼层

Re: Python + Spire.XLS实现Excel一键批量查找替换与条件修改

感谢分享,这三个场景非常实用!尤其第三个条件替换的例子,能直接提取数字做单位换算,省去了手动写公式的麻烦。想问一下,如果工作表里包含合并单元格,FindAllString 方法还能正常定位到文本吗?还是需要额外处理?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-7-3 11:47 , Processed in 0.031977 second(s), 17 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部