背景:
開發的APP需要導入多國語言,研發需要將翻譯後的字符串複製到values下的stings.xml中,六國語言複製的工作量太大,一開始想着使用Excel的批量替換,百度了一下給office裝了個插件叫做方方格子
但我電腦上始終用不了這個插件,於是乎用python寫腳本來實現這個功能
思路:
取stings.xml數據表中的第一行,再遍歷translate.xlsx翻譯文件尋找與之對應的翻譯,最後用replace將翻譯替換上去
取stings.xml數據表中的第二行,再遍歷…以此類推…
上代碼
from openpyxl import load_workbook
fn = "..\\case\\strings.xlsx" #導入Android Studio內的字符串xml文件(轉換成了xlsx文件)
ws = load_workbook(fn) # 打開fn文件,workbook:工作簿(excel文件)
st = ws["Sheet2"] #得到工作簿中的Sheet2表格
nRow=0 #行計數器
for row in st.iter_rows(): #遍歷每一行的數據,此時row爲一個list,裏面的元素爲每一行的單元格
nRow += 1
fn1 = "..\\case\\translate.xlsx" # 導入多國語言數據表
ws1 = load_workbook(fn1) # 打開fn文件,workbook:工作簿(excel文件)
st1 = ws1["Sheet1"]
for row1 in st1.iter_rows():
if str(row1[0].value) in str(row[0].value):
result = str(row[0].value).replace(str(row1[0].value),str(row1[1].value)) #replace(old,new),replace方法將舊字符串替換成新字符串
st["B" + str(nRow)] = result #將替換後的表格存放到B列
if row1[0].value == "%END%": #識別到%END%後停止循環
break
if row[0].value == "%END%":
break
ws.save(fn) #保存並退出excel
下圖是準備好的翻譯數據:
這是執行結果: