doc ke docx golang

WBOY
Lepaskan: 2023-05-10 10:23:36
asal
1405 orang telah melayarinya

Hari ini, saya ingin berkongsi dengan anda cara menggunakan Golang untuk menukar fail doc kepada fail docx.

Dengan kemas kini suite Microsoft Office, format fail dokumen telah dihapuskan secara beransur-ansur, dan kini format fail docx telah menjadi format dokumen yang lebih biasa. Jika anda perlu memproses dokumen dalam aplikasi anda sendiri, maka penukaran dokumen kepada docx adalah perlu.

Golang ialah bahasa pengaturcaraan berkuasa yang berfungsi dengan baik dalam mengendalikan tugas seperti penukaran dokumen. Seterusnya, saya akan memperkenalkan cara menggunakan Golang untuk menyelesaikan tugas menukar doc kepada docx.

Pertama, kita perlu menggunakan pustaka pihak ketiga "github.com/unidoc/unioffice" untuk menyelesaikan tugasan ini. Pustaka "unioffice" bergantung pada perpustakaan lain "github.com/antchfx/xmlquery", jadi kita perlu memperkenalkan kedua-dua perpustakaan ini ke dalam projek:

go get github.com/unidoc/unioffice
go get github.com/antchfx/xmlquery
Salin selepas log masuk

Seterusnya, kita perlu membaca daripada fail dokumen Ambil kandungan teks dan tukarkannya menjadi teks berformat docx. Berikut ialah contoh kod mudah:

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!")
}
Salin selepas log masuk

Dalam kod di atas, kami mula-mula membuka fail dokumen dan membacanya ke dalam objek dokumen. Kami kemudian mencipta fail docx baharu dan menyerahkannya sebagai parameter "template" objek dokumen. Seterusnya, kami merentasi setiap perenggan dan setiap contoh yang sedang berjalan dalam fail doc, menukarnya ke dalam format docx yang sepadan dan menulisnya ke fail. Akhir sekali, kami menutup objek aliran fail dan mengembalikan sifar untuk menunjukkan bahawa pemprosesan telah selesai.

Dengan contoh kod di atas, kami boleh menggunakan Golang untuk menukar fail doc kepada fail docx. Perlu diingat bahawa dalam penggunaan sebenar, kita juga perlu mempertimbangkan pengendalian pengecualian dan keteguhan program.

Ringkasnya, artikel ini memperkenalkan cara menggunakan Golang untuk menukar fail doc kepada fail docx. Saya harap artikel ini dapat membantu anda dan memberi anda sedikit bantuan semasa menangani tugas penukaran dokumen.

Atas ialah kandungan terperinci doc ke docx golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan