Analysieren Sie die xlsx-Datei. Dieses Mal werden wir mit Apache Tika 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 |
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.
Eingeführt von Maven. Ich habe "1.21" zur Verifizierung verwendet.
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())
}
}
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("-------------")
}
}
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
-------------
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