excel批量繁体转换简体


目录

[TOC]


需求:递归遍历当前目录所有Excel表格,将表名字,sheet名字,表中的繁体字全部转换为简体字

环境

pip install openpyxl opencc

脚本

import openpyxl
from opencc import OpenCC
import os
import glob

# 创建繁体转简体的转换器
cc = OpenCC('t2s')

# 读取Excel文件并转换
def convert_excel_trad_to_simp(input_file):
    # 打开 Excel 文件
    wb = openpyxl.load_workbook(input_file)
    
    # 遍历每个工作表名称,并转换工作表名称为简体
    for sheet in wb.worksheets:
        sheet_name = sheet.title
        new_sheet_name = cc.convert(sheet_name)  # 转换工作表名称
        if sheet_name != new_sheet_name:  # 如果有变化,才修改名称
            sheet.title = new_sheet_name
            print(f'工作表名称从 "{sheet_name}" 改为 "{new_sheet_name}"')

    # 遍历工作表中的每一行和每一列,转换内容
    for sheet in wb.worksheets:
        for row in sheet.iter_rows():
            for cell in row:
                if isinstance(cell.value, str):  # 只转换字符串类型的内容
                    # 将繁体转换为简体
                    cell.value = cc.convert(cell.value)

    # 保存文件,覆盖原始文件
    wb.save(input_file)
    print(f'转换完成,文件已替换: {input_file}')

# 递归遍历当前目录下所有 Excel 文件
def process_all_excel_files(directory):
    # 使用 glob 递归查找所有 .xlsx 文件
    for filepath in glob.iglob(os.path.join(directory, '**', '*.xlsx'), recursive=True):
        dirname, basename = os.path.split(filepath)
        name, ext = os.path.splitext(basename)
        
        # 转换文件名为简体
        new_name = cc.convert(name)
        new_filepath = os.path.join(dirname, f'{new_name}{ext}')
        
        # 转换 Excel 文件内容
        convert_excel_trad_to_simp(filepath)

        # 如果文件名有变化,则重命名文件
        if new_name != name:
            os.rename(filepath, new_filepath)
            print(f'文件名从 "{basename}" 改为 "{new_name}{ext}"')

# 示例用法,处理当前目录
if __name__ == '__main__':
    current_directory = os.getcwd()  # 获取当前工作目录
    process_all_excel_files(current_directory)
Last modification:October 19, 2024
V50%看看实力