Normalerweise entwickle ich mit Golang ein kleines internes Tool Neulich erhielt ich eine solche Beratung von einem Junior "Jede Woche muss ich nur ein in Word geschriebenes Dokument in Excel einfügen und zusammenstellen ..."
** "Außerdem werden" .docx "und" .doc "gemischt ..." **
Oh...
Als ich es nachgeschlagen habe, habe ich ein schönes Paket gefunden und versucht, es zu verwenden
Ein Programm, das einfach eine Word-Datei liest und an die Konsole ausgibt
package main
import (
"fmt"
"log"
"os"
"path/filepath"
"strings"
"code.sajari.com/docconv"
)
//WordContent Behält den aus der Word-Datei abgerufenen Inhalt bei
type WordContent struct {
body string
}
// String fmt.Println()Wird bei der Ausgabe mit aufgerufen
func (wc *WordContent) String() string {
return strings.TrimSpace(wc.body)
}
//FileRead Liest die Datei in dem durch den Dateinamen angegebenen Pfad und gibt ihren Inhalt zurück
func FileRead(filename string) (*WordContent, error) {
f, err := os.Open(filename)
if err != nil {
return nil, fmt.Errorf("fail to open file: %v", err)
}
defer f.Close()
switch filepath.Ext(filename) {
case ".docx":
content, _, err := docconv.ConvertDocx(f)
wc := WordContent{content}
return &wc, err
case ".doc":
content, _, err := docconv.ConvertDoc(f)
wc := WordContent{content}
return &wc, err
}
return nil, nil
}
func main() {
filename1 := "samples/sample.docx"
wc, err := FileRead(filename1)
if err != nil {
log.Fatalln(err)
}
fmt.Println(wc)
fmt.Println("----------------")
filename2 := "samples/sample.doc"
wc, err = FileRead(filename2)
if err != nil {
log.Fatalln(err)
}
fmt.Println(wc)
}
Der Punkt ist, dass die Methode zum Lesen der Datei je nach Erweiterung unterschiedlich ist.
.docx
-> docconv.ConvertDocx()
.doc
-> docconv.ConvertDoc()
Ich hoffe, es funktioniert
Recommended Posts