Versuchen Sie, den Inhalt von Word mit Golang zu erhalten

Einführung

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

code.sajari.com/docconv

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.

Ich hoffe, es funktioniert

Recommended Posts

Versuchen Sie, den Inhalt von Word mit Golang zu erhalten
Versuchen Sie, die Funktionsliste des Python> os-Pakets abzurufen
Einstellungen zum Eingeben und Debuggen des Inhalts der Bibliothek mit VS-Code
Versuchen Sie, den Betrieb von Netzwerkgeräten mit Python zu automatisieren
Holen Sie sich die Quelle der Seite unbegrenzt mit Python zu laden.
Versuchen Sie, Merkmale von Sensordaten mit CNN zu extrahieren
So erhalten Sie die ID von Type2Tag NXP NTAG213 mit nfcpy
Versuchen Sie, das N Queen-Problem mit SA von PyQUBO zu lösen
Geben Sie den Inhalt von ~ .xlsx im Ordner mit Python in HTML aus
Erstellen Sie eine Funktion, um den Inhalt der Datenbank in Go abzurufen
PhytoMine-I hat versucht, mit Python die genetischen Informationen der Pflanze zu erhalten
Versuchen Sie, die Höhendaten des National Land Research Institute mit Python abzubilden
[Einführung in Python] So sortieren Sie den Inhalt einer Liste effizient mit Listensortierung
Ich habe versucht, den Authentifizierungscode der Qiita-API mit Python abzurufen.
Versuchen Sie, den Zustand der Straßenoberfläche mithilfe von Big Data des Straßenoberflächenmanagements zu ermitteln
Einstellung, um den Inhalt der Bibliothek mit pytest einzugeben und einen Debug-Test durchzuführen
Versuchen Sie, nur den Kohlenstoff am Ende der Kette mit SMARTS zu reagieren
Ich habe versucht, die Filminformationen der TMDb-API mit Python abzurufen
Versuchen Sie, den Hintergrund und das sich bewegende Objekt des Videos mit OpenCV zu trennen
Der einfachste Weg, um mit Django zu beginnen
Versuchen Sie, das Mensch-Maschine-Diagramm mit Python zu lösen
So testen Sie den Friends-of-Friends-Algorithmus mit pyfof
Entleere den Inhalt der Redis-Datenbank mit Lua
Versuchen Sie, die Bewegung des Sonnensystems zu simulieren
Hinweis: So erhalten Sie den letzten Tag des Monats mit Python (hinzugefügt am ersten Tag des Monats)
[Überprüfung] Versuchen Sie, die Punktgruppe an der Optimierungsfunktion von Pytorch Part 1 auszurichten
So erhalten Sie mit Python eine Liste der Dateien im selben Verzeichnis
[Einführung in Python] So erhalten Sie den Datenindex mit der for-Anweisung
Versuchen Sie, das Programmier-Herausforderungsbuch mit Python3 zu lösen
Vorlage des Python-Skripts zum Lesen des Inhalts der Datei
Fügen Sie mit Matplotlib Informationen am unteren Rand der Abbildung hinzu
Versuchen Sie, die Probleme des "Matrix-Programmierers" zu lösen (Kapitel 1).
Versuchen Sie, das Problem der Zuweisung von Schulungsärzten mit Python zu lösen
Versuchen Sie, die Anzahl der Likes auf Twitter zu schätzen
[Neo4J] ④ Versuchen Sie, die Diagrammstruktur mit Cypher zu handhaben
Holen Sie sich mit Python den Betriebsstatus von JR West
Skript zum Abrufen des Ablaufdatums des SSL-Zertifikats
Versuchen Sie, mit matplotlib aus den Daten von "Schedule-kun" eine Kampfaufzeichnungstabelle zu erstellen.
Mit Python + Selenium erhalten Sie Informationen, die der Registerkarte "Netzwerk" der Chrome-Entwicklertools entsprechen
Erste Schritte mit Visual Studio Online ~ Das Ende der Ära der Umgebungskonstruktion ~
[Für Anfänger] Web-Scraping mit Python "Greifen Sie auf die URL auf der Seite zu, um den Inhalt abzurufen."
Da es Weihnachten ist, werde ich versuchen, die Genealogie Jesu Christi mit Cabocha zu zeichnen
Holen Sie sich die Anzahl der Ziffern
Simulation des Inhalts der Brieftasche
Versuchen Sie, COVID-19 Tokyo-Daten mit Python zu kratzen
[Ubuntu] So löschen Sie den gesamten Inhalt des Verzeichnisses
Ich habe versucht, die Standortinformationen des Odakyu-Busses zu erhalten
Versuchen Sie, die Leistung des Modells für maschinelles Lernen / Regression zu bewerten
Versuchen Sie, mit dem Uprobe zu spielen, der Systemtap direkt unterstützt
Ich habe versucht, mit TensorFlow den Durchschnitt mehrerer Spalten zu ermitteln
Mindestkenntnisse, um mit dem Python-Protokollierungsmodul zu beginnen
Holen Sie sich die Paketversion, um sich bei PyPI von Git zu registrieren
So aktivieren Sie das Lesen / Schreiben von net.Conn mit golang, um mit dem Kontext abzubrechen
Versuchen Sie, die Leistung des Modells für maschinelles Lernen / Klassifizierung zu bewerten
Ich möchte Betriebsinformationen über die Yahoo-Route erhalten
Versuchen Sie, die Genauigkeit der Twitter-ähnlichen Zahlenschätzung zu verbessern