如何用Go 把doc文件转换成docx文件
发布者:admin 发表于:391天前 阅读数:1265 评论:0
关键词: golang

 

核心思路,使用go调用vbs脚本把doc转换成docx,轮询到新生成的docx后返回docx文件内容

package main

import (
    "fmt"
    "log"
    "os"
    "os/exec"
    "path/filepath"
    "strings"
    "time"
)

func main() {

    dir, _ := os.Getwd()
    file := dir + "\\1.doc"
    if strings.ToLower(filepath.Ext(file)) == ".doc" {

        res := exec.Command("cmd", "/c", "start", dir+"\\doc2docx.vbs", file)  //核心关键技能
        res.Start()
        newFile := strings.Replace(file, ".doc", ".docx", 1)
        log.Println("正在生成", newFile)
        for {
            _, e := os.Stat(newFile)

            if os.IsNotExist(e) {
                time.Sleep(time.Second * 1)
                fmt.Print(".")
                continue
            } else {
                time.Sleep(time.Second * 1)
                log.Printf("\r.\n")
                log.Println("生成完毕", newFile)
                break
            }
        }

    }
}

Vbs脚本代码

'创建一个word对象
set wApp=CreateObject("word.Application")
'获取文件传递到参数
strDocName = WScript.Arguments(0)
'一下三段代码主要是把文件名由doc转成docx
intPos = InStrRev(strDocName, ".")
strDocName = Left(strDocName, intPos - 1)
strDocName = strDocName & ".docx"
'打开文件,第一个参数,传递源文件路路径,第二个参数是否打开对话框,第三个参数是否只读
set wordapp=wApp.Documents.open(WScript.Arguments(0),False,True)
'12 是文件类型,具体可以参考微软官网
wordapp.SaveAs strDocName,12 
'关闭操作
wordapp.Close
wApp.Quit