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)