luacom cygwin

前一段時間想用luacom來操作word文檔,最終發現總有那麼點問題。這兩天用cygwin寫bash腳本來完成一些Word文檔操作,不得已總要調用cscript,通過javascript來訪問wordr com對象,而這樣調用cscript有兩個問題讓我很不爽:
  1. cscript又只接受Windows格式的路徑,每次都要用 $(cygpath -w xxx) 來轉換路徑
  2. cscript輸出或錯誤都是gb2312的,每次都要轉換成utf-8:cscipt //nologo xxxxx.js 2>&1 | piconv -f gb2312 -t utf-8

Cygwin如何直接訪問com對象呢?

cygwin有lua,而lua有luacom,這個能用嗎?我剛纔試了一下,基本功能貌似沒有什麼問題。因爲cygwin本身就已經將文件名轉換成了utf-8的,所有之前一篇文章糾結於gb2312和utf-8的轉換問題也就不是問題了。

編譯安裝luacom

cygwin需要安裝 cmake make gcc g++ git lua,其他基礎的當然也要

  • git clone https://github.com/davidm/luacom.git
  • cd luacom
  • mkdir build
  • cmake ..
  • make
  • make install

測試FileSystemObject的枚舉中文文件夾功能

#!/usr/bin/lua

require "luacom"

local fso = luacom.CreateObject("Scripting.FileSystemObject")
local myFolder = fso:GetFolder("F:")
for _,file in luacom.pairs(myFolder.SubFolders) do
  print(file.Name)
end

注:我的F:盤有很我中文文件夾,測試結果正確

測試Word文檔建立和保存

#!/usr/bin/lua

require "luacom"

wordApp = luacom.CreateObject("Word.Application")
wordApp.Visible = true

wordDoc = wordApp.Documents:Add()
wordApp.Selection:TypeText("中文真的可以嗎,我也不知道啊!")
wordDoc:SaveAs2("F:\\中文的文件名哦還挺長的.docx")

wordDoc:Close(0)
wordApp:Quit(0)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章