天天看點

使用vbscript替換excel檔案的内容

這個不能算瞎折騰,也算是被逼的沒辦法了。從接手webgame開始,看到那麼多的excel檔案被翻譯為繁體,我的頭就沒小過。現在因為新版本的問題又得重新翻譯一次,經曆過上一次慘痛的過程,這一次變懶了。

大陸内地使用的是簡體中文,台灣地區使用的是繁體中文,我們将遊戲中用到的配置和所有需要漢化的文字提供給台灣合作夥伴,他們翻譯後再回傳給我們。實際上面對那麼大的工程,是不可能所有内容都一個一個去看的,是以采用的是word或是excel自動的簡轉繁功能,但這樣的方式帶來了比較緻命的問題,合作方往往在你重新生成配置檔案後,測試過程中發現一些文字需要重新替換,出現這種情況的原因主要是在于台灣地區的方言和大陸所使用的描述不一樣。比如“充值” –> “儲值”、“資訊”-> “訊息”、“設定”->“設定”等等,很多…,還有就是一段任務的描述,對方在測試時也覺得要進行修改、調整,這個時候也得重新生成,然後打包、上傳、更新版本号…

之前因為這個,曾經用.net寫過一個查找指定檔案夾下所有檔案(包含excel)的小應用程式,檢測後生成一個html,裡面重點辨別出比對到輸入文字的檔案(支援點選打開該檔案)。現在是先讓對方提供一個轉換庫,比如上面說的,然後寫程式将所有需要檢測的檔案進行替換(重點是excel),因為遊戲中需要用到的excel檔案異常多,近200個左右。數量倒不是很大,但重點是一個excel中的某一個sheet可能就超過1萬行的資料了。

最初想法是覺得很簡單,隻是替換而已,就想用php去做這件事,可到後來發現php使用phpexcel這個庫對excel讀取的時候,遇到中文,特别是繁體中文時問題多多,基本上不能讀取完一個檔案夾下的excel檔案,自行中斷了。然後想想說用vbs寫個程式吧,畢竟有近200個檔案呢,不太想寫個宏,然後把一百多個檔案打開都來執行一個這個宏指令。

寫的時候遇到了一些問題,比如在切換寫javascript、vbscript和actionscript的時候容易犯小錯誤,二就是對vbscript操作dom不熟悉,三就是需要找到可以讓循環在跑的過程中能sleep,因為檔案過多,循環無法避免而且是很漫長的過程,必須要用到sleep。寫是寫完了,不過整個跑的效果并不理想:太慢…

假設平均一個excel檔案為 15列 * 10000行,如今有超過185個這樣的excel檔案,那麼大約有 27,750,000(近三千萬次循環),不包含讀取檔案,以及循環再去替換它的内容然後寫入内容的操作。下一步是要優化這個工具,因為以後它會被經常用到,先放一下工具大緻實作(使用的是hta,可以本地直接運作)

</script>

</body>

</html>

運作起來的效果圖大緻如下圖所示:

使用vbscript替換excel檔案的内容

繼續閱讀