from openpyxl import load_workbook
wb = load_workbook('123.xlsx')
ws = wb.active
def find_cells_with_text(ws, text):
found_cells = []
for row in ws.iter_rows():
for cell in row:
if text in str(cell.value):
found_cells.append(cell)
return found_cells
cells_to_change = find_cells_with_text(ws, '3032021')
print(cells_to_change)
def replace_text_in_cells(cells, old, new):
for cell in cells:
cell.value = str(cell.value).replace(old, new)
replace_text_in_cells(cells_to_change, '3032021', '3032024')
wb.save('1233.xlsx')
以下是对这段代码的分析:
一、功能概述
这段 Python 代码的主要功能是在一个 Excel 文件('123.xlsx')中查找包含特定文本('3032021')的单元格,然后将这些单元格中的特定文本替换为新的文本('3032024'),最后将修改后的工作簿保存为新的文件('1233.xlsx')。
二、代码解析
-
导入模块和加载工作簿
from openpyxl import load_workbook
:导入了openpyxl
库中的load_workbook
函数,用于加载 Excel 文件。wb = load_workbook('123.xlsx')
:加载名为 '123.xlsx' 的工作簿。ws = wb.active
:获取活动工作表,即默认打开的工作表。
-
定义查找函数
def find_cells_with_text(ws, text):
:定义了一个函数,用于在给定的工作表中查找包含特定文本的单元格。found_cells = []
:创建一个空列表,用于存储找到的单元格。for row in ws.iter_rows():
和for cell in row:
:遍历工作表中的每一行和每一个单元格。if text in str(cell.value):
:检查单元格的值是否包含特定文本,如果包含则将该单元格添加到found_cells
列表中。return found_cells
:返回找到的单元格列表。
-
查找包含特定文本的单元格
cells_to_change = find_cells_with_text(ws, '3032021')
:调用find_cells_with_text
函数,在工作表中查找包含文本 '3032021' 的单元格,并将结果存储在cells_to_change
变量中。print(cells_to_change)
:打印找到的单元格,用于调试或查看结果。
-
定义替换函数
def replace_text_in_cells(cells, old, new):
:定义了一个函数,用于在给定的单元格列表中,将特定的旧文本替换为新文本。for cell in cells:
:遍历单元格列表。cell.value = str(cell.value).replace(old, new)
:将单元格的值转换为字符串,并使用replace
方法将旧文本替换为新文本。
-
替换文本并保存工作簿
replace_text_in_cells(cells_to_change, '3032021', '3032024')
:调用replace_text_in_cells
函数,将cells_to_change
列表中的 '3032021' 替换为 '3032024'。wb.save('1233.xlsx')
:保存修改后的工作簿为 '1233.xlsx'。