Analysez le fichier xlsx. Cette fois, nous analyserons en utilisant Apache Tika.
Cette fois, nous analyserons les fichiers avec le contenu suivant.
En remarque, le fichier que j'ai utilisé pour la confirmation lors de la rédaction de cet article a été généré à l'aide d'une feuille de calcul Google Docs, je n'ai donc pas été en mesure de confirmer qu'il fonctionnera correctement même s'il est généré à partir d'un logiciel authentique / tiers. En outre, dans le fichier réel, les polices ont été modifiées séparément, mais le résultat de l'analyse n'a pas été affecté.
Feuille 1 | ||
---|---|---|
hoge | Fuga | Piyo |
fizz | Mauvais | fizzBuzz |
Vous pouvez le faire en installant une bibliothèque et en analysant.
Cette fois, je vais essayer deux méthodes, l'une consiste à analyser uniquement les fichiers de type xml
(y compris xlsx), et l'autre consiste à demander à Tika de détecter le type de fichier et de l'analyser automatiquement.
Introduit de Maven. J'ai utilisé «1.21» pour la vérification.
xml
Il peut être analysé en utilisant ʻOOXML Parser. Le résultat analysé est stocké dans «ContentHandler» (cette fois «BodyContentHandler»). Je n'ai trouvé aucun moyen d'obtenir des informations de
BodyContentHandler autre que
toString`.
L'exemple de code est le suivant.
Analysez les fichiers xml dans src / main / resources
.
En guise de mise en garde, si vous insérez un fichier qui n'est pas de type xml (= ʻOOXMLParser` ne peut pas être analysé), il sera supprimé.
Le résultat de l'exécution est le même que la méthode permettant à Tika de détecter le type de fichier et de l'analyser automatiquement, je vais donc l'omettre.
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() //Analyseur de données XML
val metaData = TikaMetadata()
val context = ParseContext()
val handler = BodyContentHandler() //Gestionnaire de stockage des résultats d'analyse
File(System.getProperty("user.dir") + "/src/main/resources").listFiles().forEach {
parser.parse(FileInputStream(it), handler, metaData, context)
println(handler.toString())
}
}
Cela peut être réalisé en remplaçant l'analyseur par ʻAutoDetectParser` à partir de l'exemple de code ci-dessus.
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() //Analyseur qui détecte automatiquement les types de fichiers
val metaData = TikaMetadata()
val context = ParseContext()
val handler = BodyContentHandler() //Gestionnaire de stockage des résultats d'analyse
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("-------------")
}
}
J'ai essayé tous les formats de fichiers autres que zip qui peuvent être déposés dans la feuille de calcul.
-------------
xls_for_test.xlsx
Feuille 1
hoge Fuga Piyo
fizz Buzz fizzBuzz
-------------
-------------
xls_for_test -Feuille 1.csv
Feuille 1
hoge Fuga Piyo
fizz Buzz fizzBuzz
hoge,Fuga,Piyo
fizz,Mauvais,fizzBuzz
-------------
-------------
xls_for_test.ods
Feuille 1
hoge Fuga Piyo
fizz Buzz fizzBuzz
hoge,Fuga,Piyo
fizz,Mauvais,fizzBuzz
hoge
Fuga
Piyo
fizz
Mauvais
fizzBuzz
???
Page
??? (???)
00/00/0000, 00:00:00
Page /
-------------
-------------
xls_for_test -Feuille 1.pdf
Feuille 1
hoge Fuga Piyo
fizz Buzz fizzBuzz
hoge,Fuga,Piyo
fizz,Mauvais,fizzBuzz
hoge
Fuga
Piyo
fizz
Mauvais
fizzBuzz
???
Page
??? (???)
00/00/0000, 00:00:00
Page /
hoge Fuga Piyo
fizz Buzz fizzBuzz
-------------
-------------
xls_for_test -Feuille 1.tsv
Feuille 1
hoge Fuga Piyo
fizz Buzz fizzBuzz
hoge,Fuga,Piyo
fizz,Mauvais,fizzBuzz
hoge
Fuga
Piyo
fizz
Mauvais
fizzBuzz
???
Page
??? (???)
00/00/0000, 00:00:00
Page /
hoge Fuga Piyo
fizz Buzz fizzBuzz
hoge Fuga Piyo
fizz Buzz fizzBuzz
-------------
Pour le moment, je suis heureux de pouvoir analyser des fichiers dans différents formats, pas seulement xlsx.
Cependant, la sortie du résultat analysé est douloureuse si elle est au format BodyContentHandler
, donc je vais chercher quelque chose qui correspond mieux à mon objectif.
Recommended Posts