Heim >Backend-Entwicklung >Golang >doc zu docx golang

doc zu docx golang

WBOY
WBOYOriginal
2023-05-10 10:23:361447Durchsuche

Heute möchte ich Ihnen zeigen, wie Sie mit Golang Doc-Dateien in DocX-Dateien konvertieren können.

Mit dem Update der Microsoft Office-Suite wurde das Doc-Dateiformat schrittweise abgeschafft, und jetzt ist das Docx-Dateiformat zu einem gebräuchlicheren Dokumentformat geworden. Wenn Sie Dokumente in Ihrer eigenen Anwendung verarbeiten müssen, ist die Konvertierung von doc in docx erforderlich.

Golang ist eine leistungsstarke Programmiersprache, die sich sehr gut für Aufgaben wie die Dokumentenkonvertierung eignet. Im Folgenden werde ich vorstellen, wie Sie Golang verwenden, um die Aufgabe der Konvertierung von doc in docx abzuschließen.

Zuerst müssen wir die Drittanbieter-Bibliothek „github.com/unidoc/unioffice“ verwenden, um diese Aufgabe abzuschließen. Die Bibliothek „unioffice“ hängt von einer anderen Bibliothek „github.com/antchfx/xmlquery“ ab, daher müssen wir diese beiden Bibliotheken in das Projekt einführen:

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

Als nächstes müssen wir den Textinhalt aus der Dokumentdatei lesen und konvertieren konvertieren Sie es in einen Text im DOCX-Format. Hier ist ein einfacher Beispielcode:

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!")
}

Im obigen Code öffnen wir zunächst die Dokumentdatei und lesen sie in ein Dokumentobjekt ein. Anschließend erstellen wir eine neue docx-Datei und übergeben sie als „template“-Parameter des Dokumentobjekts. Als nächstes durchlaufen wir jeden Absatz und jede laufende Instanz in der Doc-Datei, konvertieren ihn in das entsprechende docx-Format und schreiben ihn in die Datei. Schließlich schließen wir das Dateistream-Objekt und geben Null zurück, um anzuzeigen, dass die Verarbeitung abgeschlossen ist.

Mit dem obigen Codebeispiel können wir Golang verwenden, um Doc-Dateien in DocX-Dateien zu konvertieren. Es ist erwähnenswert, dass wir bei der tatsächlichen Verwendung auch die Ausnahmebehandlung und die Robustheit des Programms berücksichtigen müssen.

Zusammenfassend stellt dieser Artikel vor, wie Sie mit Golang Doc-Dateien in DocX-Dateien konvertieren. Ich hoffe, dieser Artikel kann Ihnen helfen und Ihnen bei der Bewältigung von Dokumentenkonvertierungsaufgaben Hilfestellung geben.

Das obige ist der detaillierte Inhalt vondoc zu docx golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Rundung der Golang-DivisionNächster Artikel:Rundung der Golang-Division