【办公神器】批量关键词查找/替换,筛选excel,word + 支持windows系统

10 阅读3分钟

视频功能演示

www.bilibili.com/video/BV1dJ…

背景痛点

前阵子xx公司有一批excel 需要根据关键词筛选出来,并且需要把关键词替换成另外一个词。

image

 

 但是,问题来了,excel有上千份,如果每一份都要手动搜索和替换,那时间将不复存在!!!!

这里我有一个解决方案:可以指定excel目录, 然后进行批量关键词替换。**
**

 

功能用法介绍

关注公众号“老罗软件”,回复:“小鱼办公” , 查看软件。

关注公众号“老罗软件”,回复:“小鱼办公” , 查看软件。

 

功能概述

专门进行excel和word文档的查找和替换, 支持批量文件,一键搜索和替换,还可以指定命中关键词的样式。

 

首先我们需要选择要查找的文件目录(支持excel和word文档):

image

 

 

 然后输入要查找的关键词:

image

 

替换的关键词可以不用填, 有替换的需求就填, 如果不填,就只筛选出包含关键词的文档出来。

匹配模式选择 “模糊匹配” 就可以,一般不用改变。

image

 

 还可以根据你实际的需求,勾选是否区分大小写。

 命中的样式设置(选填):

image

 

设置好之后, 点击开始替换,就会自动执行,结果文件在原文档目录的out下面:

image

 

 

 

如果您有疑问可以一起来探讨,功能就介绍到 这里 ,希望能帮助大家,感谢!!!

如果您有疑问可以一起来探讨,功能就介绍到 这里 ,希望能帮助大家,感谢!!!

 

 

技术实现原理

软件是基于Python开发的现代化办公自动化软件,主要使用了如下技术架构:

1. PySide6 (Qt6) - 现代化GUI界面框架:

2. springboot: 格式的调整是通过后端java实现的。

  1. 文件处理:os.walk() - 递归遍历目录结构。

 

部分代码解析

项目的 开始 按钮,会开启一个QThread线程去处理,首先是获取移除目录, 然后通过os.walk遍历目录获取到所有文件,然后一个一个进行处理,代码如下:

复制代码

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
批量查找替换服务类
提供Excel文件中的批量查找替换功能的核心实现
"""
import os
import re
from pathlib import Path

import openpyxl
from openpyxl.styles import Font, PatternFill
from openpyxl.utils import get_column_letter

from api.excel_api import ExcelAPI
from utils.logger import info, error, warning, debug
from utils import FileUtils


class FindReplaceService:
    """批量查找替换服务类"""
    
    def __init__(self):
        """初始化服务"""
        self.excel_api = ExcelAPI()
    
    def get_excel_files(self, directory):
        """获取目录下的所有Excel文件"""
        return FileUtils.list_files(directory,['.xlsx', '.xls', '.xlsm','.docx', '.doc'])

    def find_replace_in_excel(self, output_file , excel_file, find_text, replace_text, match_mode, case_sensitive,
                             bg_color=None, font_name=None, font_size=None, font_color=None):
        """在Excel文件中查找并替换文本
        Args:
            excel_file: Excel文件路径
            find_text: 要查找的文本
            replace_text: 替换的文本
            match_mode: 匹配模式('exact', 'fuzzy', 'startswith', 'endswith')
            case_sensitive: 是否区分大小写
            bg_color: 背景颜色(RGB格式,如'FFFF00'表示黄色)
            font_name: 字体名称
            font_size: 字体大小
            font_color: 字体颜色(RGB格式)
            
        Returns:
            tuple: (替换次数, 替换单元格列表)
        """
        print(find_text, "," , replace_text,",", match_mode,",", case_sensitive,",", bg_color,",", font_name,",", font_size , " , ",font_color)
        self.excel_api.find_replace(excel_file , output_file , {
            "find_text":find_text,
            "replace_text":replace_text,
            "match_mode":match_mode,
            "case_sensitive":case_sensitive,
            "bg_color":bg_color,
            "font_name":font_name,
            "font_size":font_size,
            "font_color":font_color
        })

复制代码