最近闲来无事写了份保姆级别的翻译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 -s <表名>
也可以输入以下命令查看帮助
python Excel_Google.py -h
需要注意的是在翻译的时候需要将原Excel文件关闭,并且该脚本为覆盖翻译,请注意文件的备份!!!
import getopt
import sys
from tqdm import tqdm
from openpyxl import load_workbook
from pygoogletranslation import Translator
def 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名字来获取该sheet
except:
print("错误:打开'" + sheet + "'表格失败,请检查表名是否有误!!!")
sys.exit()
print("准备开始翻译的Excel文件路径为:" + file_home +",表名为:" + sheet)
# 更换谷歌翻译地址
translator = Translator(service_url='translate.google.cn')
nrows = ws.max_row
ncols = ws.max_column
print("行数:%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').text
try:
wb.save(file_home) # 保存修改后的excel
except:
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 -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 = arg
elif opt in ("-s", "--sheet"):
sheet = arg
else:
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!