无需安装 Office,用 Python 轻松替换 Excel 数据
核心对象模型
库的核心操作围绕两个对象展开:
Workbook:代表整个 Excel 工作簿,负责文件的加载与保存
Worksheet:代表单个工作表,提供单元格访问与查找替换能力
导入方式:
from spire.xls import *
from spire.xls.common import *
基本用法:在整个工作表中查找和替换
最基础的操作是在整个工作表中查找特定文本并将其替换为新内容。核心方法是Worksheet.FindAllString(),它返回所有包含指定字符串的单元格。
以下示例演示了如何将工作表中所有的“总数”替换为“合计金额”,并高亮显示被修改的单元格:
from spire.xls import *
from spire.xls.common import *
创建Workbook对象
workbook = Workbook()
加载Excel文件
workbook.LoadFromFile(“数据.xlsx”)
获取第一个工作表
worksheet = workbook.Worksheets[0]
查找工作表中包含"总数"的所有单元格
参数:要查找的字符串、是否区分大小写、是否完全匹配
ranges = worksheet.FindAllString(“总数”, False, False)
遍历找到的单元格并替换
for range in ranges:
range.Text = “合计金额”
设置背景色以突出显示被修改的单元格
range.Style.Color = Color.get_Yellow()
保存结果文件
workbook.SaveToFile(“替换结果.xlsx”, ExcelVersion.Version2016)
workbook.Dispose()
FindAllString()方法的三个参数分别表示:待查找的字符串、是否区分大小写(True 为区分)、是否要求完全匹配(True 为完全匹配)。
在指定单元格区域中查找和替换
当工作表数据量大时,限定搜索范围可以提高效率并避免误改。通过Worksheet.Range[]获取特定区域后,使用CellRange.FindAllString()方法在该区域内查找:
from spire.xls import *
from spire.xls.common import *
workbook = Workbook()
workbook.LoadFromFile(“数据.xlsx”)
sheet = workbook.Worksheets[0]
获取指定的单元格区域(A6到C13)
range = sheet.Range[“A6:C13”]
在该区域内查找包含"总数"的单元格
cells = range.FindAllString(“总数”, False, False)
for cell in cells:
cell.Text = “合计金额”
cell.Style.Color = Color.get_Yellow()
workbook.SaveToFile(“区域替换结果.xlsx”, ExcelVersion.Version2016)
workbook.Dispose()
高级技巧:查找后执行条件替换
在实际场景中,替换逻辑可能不是简单的文本替换,而是需要根据条件进行判断。以下示例展示了如何在查找后根据单元格原有内容执行不同的替换逻辑:
from spire.xls import *
from spire.xls.common import *
workbook = Workbook()
workbook.LoadFromFile(“销售数据.xlsx”)
worksheet = workbook.Worksheets[0]
查找所有包含数字的单元格(假设需要将销售额单位从"元"改为"万元")
ranges = worksheet.FindAllString(“元”, False, False)
for range in ranges:
original = range.Text
提取数字部分并转换为万元
try:
假设原始格式为"1234元"
num = float(original.replace(“元”, “”))
range.Text = f"{num / 10000:.2f}万元"
except:
如果格式不匹配,保持原样
pass
workbook.SaveToFile(“条件替换结果.xlsx”, ExcelVersion.Version2016)
workbook.Dispose()
