[Java] Analysieren Sie Excel-Dateien (nicht auf verschiedene Dateien beschränkt) mit Apathce Tika [Kotlin]

Was du machen willst

Analysieren Sie die xlsx-Datei. Dieses Mal werden wir mit Apache Tika analysieren.

Inhalt zu analysieren

Dieses Mal werden wir die Dateien mit den folgenden Inhalten analysieren.

Nebenbei bemerkt, die Datei, die ich beim Schreiben dieses Artikels zur Bestätigung verwendet habe, wurde mithilfe einer Google Text & Tabellen-Tabelle generiert. Daher konnte ich nicht bestätigen, dass sie ordnungsgemäß funktioniert, selbst wenn sie mit Original- / Drittanbieter-Software erstellt wurde. In der eigentlichen Datei wurden die Schriftarten separat geändert, das Analyseergebnis wurde jedoch nicht beeinflusst.

Blatt1
hoge Fuga Piyo
fizz Bads fizzBuzz

Wie macht man

Sie können dies tun, indem Sie eine Bibliothek installieren und analysieren. Dieses Mal werde ich zwei Methoden ausprobieren: Eine besteht darin, nur Dateien vom Typ "xml" (einschließlich xlsx) zu analysieren, und die andere besteht darin, dass Tika den Dateityp erkennt und automatisch analysiert.

Stellen Sie Apache Tika Parsers vor

Eingeführt von Maven. Ich habe "1.21" zur Verifizierung verwendet.

So analysieren Sie nur XML-Systemdaten

Sie können es mit OOXMLParser analysieren. Das analysierte Ergebnis wird in "ContentHandler" (diesmal "BodyContentHandler") gespeichert. Ich konnte keine andere Möglichkeit finden, Informationen von "BodyContentHandler" als "toString" zu erhalten.

Der Beispielcode lautet wie folgt. Analysieren Sie die XML-Dateien in "src / main / resources". Wenn Sie eine Datei einfügen, die nicht vom Typ XML ist (= OOXMLParser kann nicht analysiert werden), wird sie als Einschränkung gelöscht.

Das Ausführungsergebnis entspricht dem Verfahren, mit dem Tika den Dateityp erkennt und automatisch analysiert. Daher werde ich ihn weglassen.

import org.apache.tika.parser.ParseContext
import org.apache.tika.parser.microsoft.ooxml.OOXMLParser
import org.apache.tika.sax.BodyContentHandler
import org.apache.tika.metadata.Metadata as TikaMetadata
import java.io.File
import java.io.FileInputStream

fun main() {
    val parser = OOXMLParser() //Parser für XML-Daten
    val metaData = TikaMetadata()
    val context = ParseContext()
    val handler = BodyContentHandler() //Handler zum Speichern von Analyseergebnissen

    File(System.getProperty("user.dir") + "/src/main/resources").listFiles().forEach {
        parser.parse(FileInputStream(it), handler, metaData, context)
        println(handler.toString())
    }
}

So lässt Tika den Dateityp erkennen und automatisch analysieren

Dies kann erreicht werden, indem der Parser durch "AutoDetectParser" aus dem obigen Beispielcode ersetzt wird.

import org.apache.tika.parser.AutoDetectParser
import org.apache.tika.parser.ParseContext
import org.apache.tika.sax.BodyContentHandler
import org.apache.tika.metadata.Metadata as TikaMetadata
import java.io.File
import java.io.FileInputStream

fun main() {
    val parser = AutoDetectParser() //Parser, der Dateitypen automatisch erkennt
    val metaData = TikaMetadata()
    val context = ParseContext()
    val handler = BodyContentHandler() //Handler zum Speichern von Analyseergebnissen

    File(System.getProperty("user.dir") + "/src/main/resources").listFiles().forEach {
        println("-------------")
        println(it.name)

        parser.parse(FileInputStream(it), handler, metaData, context)
        println(handler.toString())
        println("-------------")
    }
}

Ausführungsergebnis

Ich habe alle Dateiformate außer zip ausprobiert, die in der Tabelle abgelegt werden können.

-------------
xls_for_test.xlsx
Blatt1
hoge Fuga Piyo
fizz Buzz fizzBuzz



-------------
-------------
xls_for_test -Blatt1.csv
Blatt1
hoge Fuga Piyo
fizz Buzz fizzBuzz


hoge,Fuga,Piyo
fizz,Bads,fizzBuzz

-------------
-------------
xls_for_test.ods
Blatt1
hoge Fuga Piyo
fizz Buzz fizzBuzz


hoge,Fuga,Piyo
fizz,Bads,fizzBuzz
	hoge
Fuga
Piyo
	
	fizz
Bads
	fizzBuzz
	
	
	

???
Page 
??? (???)
00/00/0000, 00:00:00
Page  / 

-------------
-------------
xls_for_test -Blatt1.pdf
Blatt1
hoge Fuga Piyo
fizz Buzz fizzBuzz


hoge,Fuga,Piyo
fizz,Bads,fizzBuzz
	hoge
Fuga
Piyo
	
	fizz
Bads
	fizzBuzz
	
	
	

???
Page 
??? (???)
00/00/0000, 00:00:00
Page  / 

hoge Fuga Piyo

fizz Buzz fizzBuzz



-------------
-------------
xls_for_test -Blatt1.tsv
Blatt1
hoge Fuga Piyo
fizz Buzz fizzBuzz


hoge,Fuga,Piyo
fizz,Bads,fizzBuzz
	hoge
Fuga
Piyo
	
	fizz
Bads
	fizzBuzz
	
	
	

???
Page 
??? (???)
00/00/0000, 00:00:00
Page  / 

hoge Fuga Piyo

fizz Buzz fizzBuzz


hoge Fuga Piyo
fizz Buzz fizzBuzz

-------------

Impressionen

Ich bin vorerst froh, dass ich Dateien in verschiedenen Formaten analysieren konnte, nicht nur in xlsx. Die Ausgabe des analysierten Ergebnisses ist jedoch schmerzhaft, wenn es im Format "BodyContentHandler" vorliegt. Daher werde ich nach etwas suchen, das meinem Zweck besser entspricht.

Recommended Posts

[Java] Analysieren Sie Excel-Dateien (nicht auf verschiedene Dateien beschränkt) mit Apathce Tika [Kotlin]
[Java] Mit Apathce Tika Metadaten aus Dateien abrufen und Breite und Höhe von Bildern / Videos aus Metadaten abrufen [Kotlin]
[Java] Zeichensatz mit Apathce Tika abrufen / String von Zeichensatz initialisieren [Kotlin]
Ich möchte verschiedene Funktionen mit Kotlin und Java implementieren!
[Java] Behandeln Sie Excel-Dateien mit Apache POI
[Kotlin] Doppelte Dateien löschen [Java]
[Java] Holen Sie sich MimeType aus dem Inhalt der Datei mit Apathce Tika [Kotlin]
Erste Schritte mit Kotlin zum Senden an Java-Entwickler
Ich möchte Bildschirmübergänge mit Kotlin und Java machen!
Verwendung des mit Tensorflow 2.0 trainierten Modells mit Kotlin / Java
Ich möchte eine Liste mit Kotlin und Java erstellen!
Ich möchte eine Funktion mit Kotlin und Java erstellen!
Java zum Spielen mit Function
Lassen Sie uns Excel mit Java betreiben! !!
Stellen Sie mit Java eine Verbindung zur Datenbank her
Stellen Sie mit Java eine Verbindung zu MySQL 8 her
Ich möchte mit Kotlin und Java zum vorherigen Bildschirm zurückkehren!
Android: Umgang mit "Java-Version von '10 .0.1 'konnte nicht ermittelt werden"
Projektfacette Java Version 13 wird nicht unterstützt. Wie man damit umgeht