Je développe généralement un petit outil en interne avec Golang L'autre jour, j'ai reçu une telle consultation d'un junior "Chaque semaine, il me suffit de coller un document écrit en Word dans Excel et de le remonter ..."
** "De plus, .docx
et .doc
sont mélangés ..." **
Oh...
Quand je l'ai recherché, j'ai trouvé un bon paquet, alors j'ai essayé de l'utiliser
Un programme qui lit simplement un fichier Word et le sort sur la console
package main
import (
"fmt"
"log"
"os"
"path/filepath"
"strings"
"code.sajari.com/docconv"
)
//WordContent Conserve le contenu extrait du fichier Word
type WordContent struct {
body string
}
// String fmt.Println()Appelé lors de la sortie avec
func (wc *WordContent) String() string {
return strings.TrimSpace(wc.body)
}
//FileRead Lit le fichier dans le chemin spécifié par nom de fichier et renvoie son contenu
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)
}
Le fait est que la méthode de lecture du fichier diffère en fonction de l'extension.
.docx
-> docconv.ConvertDocx()
.doc
-> docconv.ConvertDoc()
J'espère que ça marche
Recommended Posts