python 英语翻译 excel_Excel自动翻译
有朋友问有没有Excel公式可以自动翻译公式中的文本。
查看了几个相关的帖子发现都是通过调用翻译网站提供的API获取数据这些帖子都是较早时候发布的其中使用的SDK已经弃用现在平台升级为SDK系统对吧为了达到类似效果则需要编写相应的逻辑代码平时对Excel不太熟悉也不确定Python是否能有效替代VBA但因为比较熟悉Python所以决定采用它作为开发工具
下面是Python的安装包下载链接:
Python2 Windows 64位下载
Python2 Windows 32位下载
目前使用的是基于早期版本的系统架构。尽管人工智能技术发展迅速,在各个领域都得到了广泛应用。如今人工智能技术发展迅速,并非仅仅局限于学术研究领域。此外,在教育体系中这一课程也已纳入相关考试体系中。近年来已有多个省份开始在中小学引入这一编程语言作为教学内容,并逐渐推广开来
安装教程:
廖雪峰 Python安装
在安装选项中选择并配置好pip环境后,请确保已将python.exe添加到Python``Path变量中以避免运行时错误。其他设置请参考官方教程获取详细指导
安装完成后,需要安装几个依赖包。步骤:
Windows + R 打开运行窗口。
输入cmd,回车 打开命令行。
输入pip install xlrd,回车 等待结束。
输入pip install XlsxWriter,回车 等待结束。
在安装过程中,默认显示的结果为英文形式。当遇到类似‘Success’之类的单词时,则表示安装完成。若出现带有红色背景标记的文字或‘failed’则表明安装失败。
通过浏览一些知名翻译网站后发现,多数存在付费限制的情况较多。少数提供有限词汇量免费使用服务的网站也难以满足日常需求。最终决定采用的是百度翻译这一工具。该服务每月提供高达200万字符的免费使用额度,并且通常能满足普通用户的日常需求水平。不过需要注意的是,在使用过程中仍需注册一个百度翻译开放平台账号才能开始工作
下面是功能代码:
#!/usr/bin/env python
-- coding: utf-8 --
from future import print_function
import math
import re
import sys
import os
import httplib
import md5
import urllib
import random
import json
import xlrd
import xlsxwriter
class Boot(object):
============ 只改这里 ====================
APPID = '你的APP ID'
SECRET_KEY = '你的密钥'
FILE_NAME = u'测试.xlsx' # Excel文件名
NEW_FILE_NAME = u'测试-结果.xlsx' # 输出文件
SHEET_NAME = u'测试' # 页名
START_CELL = 'C5' # 开始格子
END_CELL = 'D19' # 结束格子
SRC_LAN = 'jp' # 源语言
DST_LAN = 'zh' # 目标语言
============ ~只改这里 ====================
@classmethod
def row_name_2_real_name(cls, row_name):
row_name = row_name.lower()
result = 0
for ch in row_name:
result = result * 26 + (ord(ch) - 96)
return int(result + 0.5)
@classmethod
def view_nam_2_real_name(cls, view_name):
mat = re.match(r'([a-zA-Z]+)(\d+)', view_name)
if not mat:
cls.printu(u'格子号不对!')
sys.exit(1)
row = int(mat.group(2))
column = cls.row_name_2_real_name(mat.group(1))
return (row - 1, column - 1)
@classmethod
def get_cell_value(cls, work_sheet, row, column, tp):
return tp(work_sheet.cell(row, column).value)
@classmethod
def printu(cls, u_text):
if sys.platform == 'win32':
print(u_text.encode('gbk'))
else:
print(u_text.encode('utf-8'))
@classmethod
def translate(cls, src_text):
result = u'【翻译失败】'
salt = random.randint(32768, 65536)
sign = '%s%s%s%s' % (
cls.APPID,
src_text,
salt,
cls.SECRET_KEY
)
m1 = md5.new()
m1.update(sign)
sign = m1.hexdigest()
translate_url = '/api/trans/vip/translate?appid=%s&q=%s&from=%s&to=%s&salt=%s&sign=%s' % (
cls.APPID,
src_text,
cls.SRC_LAN,
cls.DST_LAN,
salt,
sign
)
httpClient = None
try:
httpClient = httplib.HTTPConnection('api.fanyi.baidu.com')
httpClient.request('GET', translate_url)
response = httpClient.getresponse()
ret = json.loads(response.read(), 'utf-8')
if ret and ret['trans_result'] and len(ret['trans_result']) > 0:
result = ret['trans_result'][0]['dst']
except Exception, e:
cls.printu(u"ERROR: 翻译%s失败:%s" % (src_text, e))
finally:
if httpClient:
httpClient.close()
return result
@classmethod
def boot(cls):
excel_file_path 被赋值为 os.path.join( os.path.dirname( os.path.abspath(file) ), cls.FIle_NAME )
work_book = xlrd.open_workbook(excel_file_path)
work_sheet = work_book.sheet_by_name(cls.SHEET_NAME)
start_row, start_column = cls.view_nam_2_real_name(cls.START_CELL)
end_row, end_column = cls.view_nam_2_real_name(cls.END_CELL)
collector = []
for i in xrange(start_column, end_column + 1):
for j in xrange(start_row, end_row + 1):
src_text = cls.get_cell_value(work_sheet, j, i, unicode)
cls.printu(u"翻译:%s" % src_text)
src_text = src_text.encode('utf-8')
dst_text = cls.translate(src_text)
collector.append(dst_text)
该函数用于生成一个名为xlsxwriter的工作book对象。
work_sheet = work_book.add_worksheet()
for idx, data in enumerate(collector):
work_sheet.write(idx, 0, data)
work_book.close()
if name == 'main':
Boot.boot()
粘贴这段代码到文本文件中
文件中"只改这里"标记内为待修改的部分:APP ID和密钥可以在你的百度翻译开放平台-管理控制台的最下面查看。直接替换'你的APP ID'和'你的密钥'就行。下面的依次为你要翻译的Excel文件名(例如),输出文件名(例如),页签名(例如),开始格子名(例如),结束格子名(例如),源语言(例如汉语),目标语言(例如)。开始格子名和结束格子名标识翻译内容的格子范围。
语言简写
名称
auto
自动检测
zh
中文
en
英语
yue
粤语
wyw
文言文
jp
日语
kor
韩语
fra
法语
spa
西班牙语
th
泰语
ara
阿拉伯语
ru
俄语
pt
葡萄牙语
de
德语
it
意大利语
el
希腊语
nl
荷兰语
pl
波兰语
bul
保加利亚语
est
爱沙尼亚语
dan
丹麦语
fin
芬兰语
cs
捷克语
rom
罗马尼亚语
slo
斯洛文尼亚语
swe
瑞典语
hu
匈牙利语
cht
繁体中文
vie
越南语
执行上述操作后,请启动translate.py程序。待其运行完成并弹出对话框后,请关闭该对话框以获取翻译结果。
