使用谷歌翻译Excel表格的Python自动脚本
最近闲来无事写了份保姆级别的翻译Excel文件的python脚本。
最后在参考各位大佬的教程后写出的脚本,需要的可以自取。
github源码
食用方法
需要安装以下包:openpyxl、pygoogletranslation和tqdm。
修改pygoogletranslation源码中的utils.py的第8行为
(源码在python路径下的\Lib\site-packages\pygoogletranslation文件夹中)
from pygoogletranslation.models import TranslatedPart
然后在命令行输入以下命令后按提示操作即可
python Excel_Google.py -f <Execl文件位置> -s <表名>
也可以输入以下命令查看帮助
python Excel_Google.py -h
需要注意的是在翻译的时候需要将原Excel文件关闭,并且该脚本为覆盖翻译,请注意文件的备份!!!
import getoptimport sysfrom tqdm import tqdmfrom openpyxl import load_workbookfrom pygoogletranslation import Translatordef Google_Fanyi(file_home, sheet):try:wb = load_workbook(filename=file_home) # 打开excel文件except:print("错误:打开'" + file_home + "'的文件失败,请检查文件路径是否有误!!!")sys.exit()try:ws = wb[sheet] # 根据Sheet1这个sheet名字来获取该sheetexcept:print("错误:打开'" + sheet + "'表格失败,请检查表名是否有误!!!")sys.exit()print("准备开始翻译的Excel文件路径为:" + file_home +",表名为:" + sheet)# 更换谷歌翻译地址translator = Translator(service_url='')nrows = ws.max_rowncols = ws.max_columnprint("行数:%d\t列数:%d"%(nrows,ncols))input("请确定是否关闭Excel文件(输入任意键开始翻译)")pbar = tqdm(total=nrows * ncols)# 获取进度条总数for row in range(1, nrows + 1):for col in range(1, ncols + 1):pbar.update(1)# 更新进度条if ws.cell(row, col).value != None:ws.cell(row, col).value = translator.translate(ws.cell(row, col).value, dest='zh-CN').texttry:wb.save(file_home) # 保存修改后的excelexcept:print("错误:未关闭Excel表格文件")sys.exit()if __name__ == '__main__':opts, args = getopt.getopt(sys.argv[1:], "hf:s:", ["file=", "sheet="])if len(opts) != 0:for opt, arg in opts:if opt == '-h':print("使用格式为:\npython Excel_Google.py -f <Execl文件位置> -s <表名>\n"+ "PS:如果第一次使用请安装以下包:openpyxl、pygoogletranslation和tqdm。\n"+ " 并修改pygoogletranslation源码中的utils.py的第8行为:\n"+ " from pygoogletranslation.models import TranslatedPart\n"+ "#开始运行代码时不可打开Excel文件#")sys.exit()elif opt in ("-f", "--file"):file_home = argelif opt in ("-s", "--sheet"):sheet = argelse:print("错误:参数有误,python Excel_Google.py -h获取详情")sys.exit()try:Google_Fanyi(file_home, sheet)except:print("警告:参数不完整或发生错误,使用python Excel_Google.py -h获取详情")sys.exit()print("Enjoy it!")else:print("错误:参数为空,使用python Excel_Google.py -h获取详情\n"+ "PS:如果第一次使用请安装以下包:openpyxl、pygoogletranslation和tqdm。\n"+ " 并修改pygoogletranslation源码中的utils.py的第8行为:\n"+ " from pygoogletranslation.models import TranslatedPart\n"+ "#开始运行代码时不可打开Excel文件#")sys.exit()
最后Enjoy it!