您的位置:首页 > 编程语言 > Python开发

Python操作Excel(翻译工具(一种语言))

2017-12-26 10:50 831 查看
对Python的翻译工具的总结功能翻译工作:通过客户或者已经确认的翻译进行比对,只要英文相同,就将客户确认的翻译引入替换思路1.打开标准翻译,需要翻译,翻译记录三张表(对一张表的内容进行修改并保存,需要用到copy()函数)
data_e = xlrd.open_workbook('需要翻译.xls',formatting_info = True)#需要翻译的表
data_1 = xlrd.open_workbook('标准翻译.xls')#翻译库
data_jl = xlrd.open_workbook('翻译记录表.xls')#记录表
wb = copy(data_e)
ws = wb.get_sheet(0)#翻译库

wb_jl = copy(data_jl)
ws_jl = wb_jl.get_sheet(0)#记录表
2.获取到每个表对应的行数,列数方便后面可以拿到对应位置的数据
table_e = data_e.sheet_by_index(0)#需要翻译的第一张表
table_1 = data_1.sheet_by_index(0)#标准翻译表的第一张表
table_jl = data_jl.sheet_by_index(0)#翻译记录表的第一张表

nrows = table_e.nrows#表需要翻译.xls行数
ncols = table_e.ncols#表需要翻译.xls列数

nnrows = table_1.nrows#表标准翻译.xls行数
nncols = table_1.ncols#表标准翻译.xls列数

nrows_jl = table_jl.nrows#表的翻译记录表.xls行数
ncols_jl = table_jl.ncols#表的翻译记录表.xls列数
3.开始进行比对首先判断需要翻译的表中该字符串是否翻译(未翻译继续执行)再判断标准翻译表中对应的字符串是否翻译(已翻译继续执行)
string_E = table_e.cell(i,1).value	 		#需要翻译表的英文
string_E_t = table_e.cell(i,2).value		 	#需要翻译表的翻译
string_1 = table_1.cell(j,0).value 			#标准翻译表的英文
string_1_t = table_1.cell(j,1).value 			#标准翻译表的翻译
4.翻译记录表同时进行记录已经翻译确认的字符串在第三步比对完成后得到已经翻译确认的字串ID(需要翻译表的第一列,英文是第二列),由字串ID和翻译的国家语言(需要翻译表的第一行第三列)确定位置进行标记
对于范围内的数字(1,ncols_jl,1):
str1 = table_e.cell(0,2).value
str2 = table_jl.cell(0,num).value
如果str1 == str2:#对应记录表找到相对应的字符串
对于范围内的num1(nrows_jl):
if table_jl.cell(num1,0).value == string_ID:#将翻译的字符串用“1”标注,“0”表示没翻译
ws_jl.write(NUM1,NUM, '1')
5.在翻译成功后,在需要翻译的表中进行标记,便于检查核对。在翻译一列中翻译成功的语言用蓝色标记,在第四列对应位置进行说明,成功翻译的,标准翻译未翻译的,以及英文在标准翻译中未找到的。6.在翻译前,首先确认该语言是否全部已经确认。通过判断翻译记录表,某个语言中,只要有'0'存在,则该语言没有全部翻译确认(1表示翻译确认,0表示不确认,9表示不需要翻译)
#每次开始查找翻译前先确认该语言是否全部确认
对于范围(1,ncols_jl,1)中的num_t:
如果table_e.cell(0,2).value == table_jl.cell(0,num_t).value:#对应记录表找到相对应的字符串
对于范围(1,nrows_jl,1)中的num1_t:
如果int(table_jl.cell(num1_t,num_t).value)== 0:
flg = 9
打破
如果flg == 9:
print'开始翻译:'
elif flg == 0:
print'该语言翻译已经全部确认'
出口(O)
7.对表格进行颜色标记
stylei = xlwt.XFStyle()#初始化样式
patterni = xlwt.Pattern()#为样式创建图案
patterni.pattern = 2#设置底纹的图案索引,1为实心,2为50%灰色,对应为excel文件单元格格式中填充中的图案样式
patterni.pattern_fore_colour = 15#设置底纹的前景色,对应为excel文件单元格格式中填充中的背景色
patterni.pattern_back_colour = 15#设置底纹的背景色,对应为excel文件单元格格式中填充中的图案颜色
stylei.pattern = patterni#为样式设置图案
ws.write(i,2,str_1,stylei)#使用样式
8.在等待翻译结束,添加了进度条。进度条的时间是执行次数进行模拟,--- 1 --- 2 --- --- 3 --- 4 5 --- --- 6 7 --- 8 --- --- 9完成(%)总共43段,所有用总共的实现次数除以43进行循环打印,每43次打印一段进度条,总共会打印43次
count1 = count1 + 1
如果count1 ==(nnrows * nrows)/ 43:
sys.stdout.write函数( '█' + ' - >' + “\ B \ B”)
sys.stdout.flush()
count1 = 0
补充:每次开始查找翻译前先检查一遍翻译是否有空白
for j in range(1,nnrows,1):
for i in range(1,nrows,1):
string_E = table_e.cell(i,1).value
string_E_t = table_e.cell(i,2).value
if string_E_t == '':
ws.write(i,2,string_E)
stylei= xlwt.XFStyle()            #初始化样式
patterni= xlwt.Pattern()          #为样式创建图案
patterni.pattern=2                #设置底纹的图案索引,1为实心,2为50%灰色,对应为excel文件单元格格式中填充中的图案样式
patterni.pattern_fore_colour=17    #设置底纹的前景色,对应为excel文件单元格格式中填充中的背景色
patterni.pattern_back_colour=17   #设置底纹的背景色,对应为excel文件单元格格式中填充中的图案颜色
stylei.pattern=patterni           #为样式设置图案
ws.write(i,2,string_E,stylei)        #使用样式
代码如下:导入xlrd导入xlwt从xlutils.copy导入拷贝进口操作系统导入重新从datetime导入日期时间#from __future__进口部门导入sys,时间“””每次修改翻译之前,需要把对应的用户界面下的翻译记录表替换进来脚本使用:1.所有表格格式使用XXX.xls(XXX.xlsx格式会出问题)。2.将需要翻译的语言和对应的英语以及字符串ID复制到需要翻译.xls表格中。格式例如:ID English French3.将标准翻译库做好备份,和步骤2做法相同,复制到标准翻译.xls表格中。格式例如:English French4.翻译记录表.xls中的ID,要和需要翻译的表格的ID一样,翻译记录表记录翻译过的字符串(0为未翻译或翻译未确定,1为翻译已确认。每个对应的UI下有对应的翻译记录表)。5.“日志”文本中记录了每次修改后的字符串ID。6.准备工作做完后执行脚本:python str.py等待完成。7.完成后的需要翻译的表格中第三列引进来的翻译会用颜色区分开利用检查,第四列会注明该字符串修改后的状态:成功修改成功,空白表示该字符串在标准库中未找到,未翻译标准库在该字符串未翻译,修改成功表示修改原有的翻译8.然后找到IDS_String_XX手动翻译这个字串下面的所有未翻译的字串。完成后复制到语言中导入。脚本功能:通过英文对比,进行翻译的引入,每次引入之前会判断翻译记录表,该语言是否全部被确认如果标准翻译和需要翻译的英文相同而且标准翻译已经做了翻译,就使用该翻译并且将每次翻译过的字符串对应语言进行记录。注意:1.所有表格格式使用XXX.xls(XXX.xlsx格式会出问题)。2.复制字串:数字,时间,比例可能会有问题,需要检查。3.注意脚本中的表格名字与文件名对应,注意翻译记录表和需要翻译两个表格中的字符串ID是否一样4.有个别字串已经翻译,但是后面标注是未翻译的,需要检查“””data_e = xlrd.open_workbook('需要翻译.xls',formatting_info = True)#需要翻译的表
data_1 = xlrd.open_workbook('标准翻译.xls')#翻译库
data_jl = xlrd.open_workbook('翻译记录表.xls')#记录表table_e = data_e.sheet_by_index(0)#需要翻译的第一张表
table_1 = data_1.sheet_by_index(0)#标准翻译表的第一张表
table_jl = data_jl.sheet_by_index(0)#翻译记录表的第一张表

nrows = table_e.nrows#表需要翻译.xls行数
ncols = table_e.ncols#表需要翻译.xls列数

nnrows = table_1.nrows#表标准翻译.xls行数
nncols = table_1.ncols#表标准翻译.xls列数

nrows_jl = table_jl.nrows#表的翻译记录表.xls行数
ncols_jl = table_jl.ncols#表的翻译记录表.xls列数打印'需要翻译的表有%d行,%d列'%(nrows,ncols)print'翻译库表有%d行,%d列'%(nnrows,nncols)print'记录表有%d行,%d列'%(nrows_jl,ncols_jl)wb = copy(data_e)
ws = wb.get_sheet(0)#翻译库

wb_jl = copy(data_jl)
ws_jl = wb_jl.get_sheet(0)#记录表f = open('日志.txt','a')#str_L = table.cell(0,1).valuedatetime.now()。strftime('%Y-%m-%d%H:%M:%S')datetime.now()。isoformat()打印>> F,STR( “\ r \ n”)打印>> F,STR(table_e.cell(0,2).value的)打印>> F,STR( “\ r \ n”)打印>> f,str(“已经翻译的字符串”)+(“(”)+ str(datetime.now())+(“):”)+(“\ r \ n”)ps = 0ps1 = 0ps2 = 0数字= 0num1_t = 0#add_sum = 0flg = 0count = 0count1 = 010,m = 2的#每次开始查找翻译前先确认该语言是否全部确认
对于范围(1,ncols_jl,1)中的num_t:
如果table_e.cell(0,2).value == table_jl.cell(0,num_t).value:#对应记录表找到相对应的字符串
对于范围(1,nrows_jl,1)中的num1_t:
如果int(table_jl.cell(num1_t,num_t).value)== 0:
flg = 9
打破
如果flg == 9:
print'开始翻译:'
elif flg == 0:
print'该语言翻译已经全部确认'
出口(O)打印“--- 1 --- 2 --- 3 --- 4 --- 5 --- 6 --- 7 --- 8 --- 9 ---完成(%)'对于范围内的j(1,nnrows,1):我在范围内(1,nrows,1):string_E = table_e.cell(i,1).valuestring_ID = table_e.cell(i,0).valuestring_E_t = table_e.cell(i,2).valuestring_1 = table_1.cell(j,0).valuestring_1_t = table_1.cell(j,1).value#翻译过程显示进度count1 = count1 + 1如果count1 ==(nnrows * nrows)/ 43:sys.stdout.write函数( '█' + ' - >' + “\ B \ B”)sys.stdout.flush()count1 = 0如果1:#string_E.strip()!=“”和string_1.strip()!=“”:如果string_E == string_1:#英文相同#if string_E_t == string_E:#需要翻译的没翻译如果string_1!= string_1_t:#翻译库已翻译#str_E = table_e.cell(i,1).valuestr_1 = table_1.cell(j,1).value#拿到的标准翻译print >> f,str(table_e.cell(i,0).value)+ str(“”)数字=数字+ 1如果数字== 5:打印>> F,STR( '\ r \ N')数字= 0ps = ps + 1ws.write(i,2,str_1)#翻译替换#设置表格颜色stylei = xlwt.XFStyle()#初始化样式
patterni = xlwt.Pattern()#为样式创建图案
patterni.pattern = 2#设置底纹的图案索引,1为实心,2为50%灰色,对应为excel文件单元格格式中填充中的图案样式
patterni.pattern_fore_colour = 15#设置底纹的前景色,对应为excel文件单元格格式中填充中的背景色
patterni.pattern_back_colour = 15#设置底纹的背景色,对应为excel文件单元格格式中填充中的图案颜色
stylei.pattern = patterni#为样式设置图案
ws.write(i,2,str_1,stylei)#使用样式ws.write(i,3,“success”)#记录翻译成功的字符串如果string_E_t!= string_E:ws.write(i,3,“修改成功”)对于范围内的数字(1,ncols_jl,1):str1 = table_e.cell(0,2).valuestr2 = table_jl.cell(0,num).value如果str1 == str2:#对应记录表找到相对应的字符串对于范围内的num1(nrows_jl):if table_jl.cell(num1,0).value == string_ID:#将翻译的字符串用“1”标注,“0”表示没翻译ws_jl.write(NUM1,NUM, '1')wb.save( '需要翻译的.xls')elif string_1 == string_1_t:ws.write(I,3, “未翻译”)ps2 = ps2 + 1打印>> F,STR( '\ r \ N')打印>> F,STR( '\ r \ N')打印>> F,STR( '\ r \ N')打印>> F,STR( '\ r \ N')wb_jl.save( '翻译记录表的.xls')wb.save( '需要翻译的.xls')打印'\ n'打印“================================================ ======================”print str(table_e.cell(0,2).value)+'总计翻译字符串个数:%d'%psprint''+'翻译库未翻译字符串个数:%d'%ps2

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python excel 语言 string