ホームページ  >  記事  >  バックエンド開発  >  doc から docx golang

doc から docx golang

WBOY
WBOYオリジナル
2023-05-10 10:23:361334ブラウズ

今日は、Golang を使用して doc ファイルを docx ファイルに変換する方法を共有したいと思います。

Microsoft Office スイートの更新に伴い、doc ファイル形式は段階的に廃止され、現在では docx ファイル形式がより一般的なドキュメント形式になりました。独自のアプリケーションでドキュメントを処理する必要がある場合は、doc を docx に変換する必要があります。

Golang は、ドキュメント変換などのタスクの処理に非常に優れたパフォーマンスを発揮する強力なプログラミング言語です。以下では、Golang を使用して doc を docx に変換するタスクを完了する方法を紹介します。

まず、このタスクを完了するには、サードパーティ ライブラリ「github.com/unidoc/unioffice」を使用する必要があります。 「unioffice」ライブラリは別のライブラリ「github.com/antchfx/xmlquery」に依存しているため、これら 2 つのライブラリをプロジェクトに導入する必要があります:

go get github.com/unidoc/unioffice
go get github.com/antchfx/xmlquery

次に、doc ファイルから読み取る必要があります。テキストコンテンツを取得し、docx 形式のテキストに変換します。以下に簡単なサンプル コードを示します。

package main

import (
    "fmt"
    "github.com/antchfx/xmlquery"
    "github.com/unidoc/unioffice/document"
    "io"
    "os"
    "path/filepath"
)

func convertDocx(filePath string) error {
    f, err := os.Open(filePath)
    if err != nil {
        return err
    }
    defer f.Close()

    r, err := document.Open(f)
    if err != nil {
        return err
    }

    docxFilePath := filepath.Join(filepath.Dir(filePath), fmt.Sprintf("%s.docx", filepath.Base(filePath)))
    f2, err := os.Create(docxFilePath)
    if err != nil {
        return err
    }
    defer f2.Close()

    w, err := document.Create(f2, document.WithTemplate(r))
    if err != nil {
        return err
    }

    for _, para := range r.Paragraphs() {
        for _, run := range para.Runs() {
            if run.IsLineBreak() {
                w.AddLineBreak()
            } else if run.IsTab() {
                w.AddTab()
            } else if run.IsPicture() {
                io.Copy(w, r.GetPictureData(run.Picture()))
            } else {
                w.WriteString(run.Text())
            }
        }

        w.AddParagraph()
    }

    w.Close()
    r.Close()

    return nil
}

func main() {
    err := convertDocx("test.doc")
    if err != nil {
        fmt.Println(err)
        return
    }

    fmt.Println("Conversion complete!")
}

上記のコードでは、まず doc ファイルを開き、それをドキュメント オブジェクトに読み込みます。次に、新しい docx ファイルを作成し、それをドキュメント オブジェクトの「テンプレート」パラメータとして渡します。次に、doc ファイル内の各段落と実行中の各インスタンスを調べ、対応する docx 形式に変換してファイルに書き込みます。最後に、ファイル ストリーム オブジェクトを閉じ、処理が完了したことを示す nil を返します。

上記のコード例では、Golang を使用して doc ファイルを docx ファイルに変換できます。なお、実際の使用においては、例外の処理やプログラムの堅牢性なども考慮する必要があります。

要約すると、この記事では Golang を使用して doc ファイルを docx ファイルに変換する方法を紹介します。この記事が、ドキュメント変換タスクに取り組む際の参考になれば幸いです。

以上がdoc から docx golangの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。