Essayez d'obtenir le contenu de Word avec Golang

introduction

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

code.sajari.com/docconv

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.

J'espère que ça marche

Recommended Posts

Essayez d'obtenir le contenu de Word avec Golang
Essayez d'obtenir la liste des fonctions du paquet Python> os
Paramètres pour entrer et déboguer le contenu de la bibliothèque avec VS Code
Essayez d'automatiser le fonctionnement des périphériques réseau avec Python
Récupérez la source de la page à charger indéfiniment avec python.
Essayez d'extraire les caractéristiques des données de capteur avec CNN
Comment obtenir l'ID de Type2Tag NXP NTAG213 avec nfcpy
Essayez de résoudre le problème N Queen avec SA de PyQUBO
Exportez le contenu de ~ .xlsx dans le dossier en HTML avec Python
Créez une fonction pour obtenir le contenu de la base de données dans Go
PhytoMine-I a essayé d'obtenir les informations génétiques de la plante avec Python
Essayez d'imaginer les données d'élévation du National Land Research Institute avec Python
[Introduction à Python] Comment trier efficacement le contenu d'une liste avec le tri par liste
J'ai essayé d'obtenir le code d'authentification de l'API Qiita avec Python.
Essayez d'obtenir l'état de la surface de la route en utilisant de grandes données de gestion de la surface de la route
Paramètre pour entrer le contenu de la bibliothèque avec pytest et effectuer un test de débogage
Essayez de ne faire réagir que le carbone en bout de chaîne avec SMARTS
J'ai essayé d'obtenir les informations sur le film de l'API TMDb avec Python
Essayez de séparer l'arrière-plan et l'objet en mouvement de la vidéo avec OpenCV
Le moyen le plus simple de démarrer avec Django
Essayez de résoudre le diagramme homme-machine avec Python
Comment essayer l'algorithme des amis d'amis avec pyfof
Vider le contenu de la base de données redis avec lua
Essayez de simuler le mouvement du système solaire
Remarque: Comment obtenir le dernier jour du mois avec python (ajouté le premier jour du mois)
[Vérification] Essayez d'aligner le groupe de points avec la fonction d'optimisation de pytorch Partie 1
Comment obtenir une liste de fichiers dans le même répertoire avec python
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for
Essayez de résoudre le livre des défis de programmation avec python3
Modèle de script python pour lire le contenu du fichier
Ajoutez des informations au bas de la figure avec Matplotlib
Essayez de résoudre les problèmes / problèmes du "programmeur matriciel" (Chapitre 1)
Essayez de résoudre le problème d'affectation du médecin de formation avec Python
Essayez d'estimer le nombre de likes sur Twitter
[Neo4J] ④ Essayez de gérer la structure du graphe avec Cypher
Obtenez l'état de fonctionnement de JR West avec Python
Script pour obtenir la date d'expiration du certificat SSL
Essayez de créer une table d'enregistrement de bataille avec matplotlib à partir des données de "Schedule-kun"
Obtenez des informations équivalentes à l'onglet Réseau des outils de développement Chrome avec Python + Selenium
Comment démarrer avec Visual Studio Online ~ La fin de l'ère de la construction d'environnement ~
[Pour les débutants] Web scraping avec Python "Accédez à l'URL de la page pour obtenir le contenu"
C'est Noël, donc je vais essayer de dessiner la généalogie de Jésus-Christ avec Cabocha
Obtenez le nombre de chiffres
Simulation du contenu du portefeuille
Essayez de gratter les données COVID-19 Tokyo avec Python
[Ubuntu] Comment supprimer tout le contenu du répertoire
J'ai essayé d'obtenir les informations de localisation du bus Odakyu
Essayez d'évaluer les performances du modèle d'apprentissage automatique / de régression
Essayez de jouer avec l'uprobe qui prend directement en charge Systemtap
J'ai essayé de trouver la moyenne de plusieurs colonnes avec TensorFlow
Connaissances minimales pour démarrer avec le module de journalisation Python
Obtenez la version du package pour vous inscrire à PyPI à partir de Git
Comment activer la lecture / écriture de net.Conn avec Golang pour annuler avec le contexte
Essayez d'évaluer les performances du modèle d'apprentissage automatique / de classification
Je veux obtenir des informations sur le fonctionnement de Yahoo Route
Essayez d'améliorer la précision de l'estimation du nombre de Twitter