Ricercare parole nei file odt

di il
4 risposte

Ricercare parole nei file odt

Salve a tutti,

Ho molti file ODT (OpenOffice) che sono composti da una immagine e da una tabella con le parole caratteristiche dell’immagine, che si possono scrivere manualmente ogni volta che si apre il file e poi salvarlo.
Vorrei crearmi un programmino in VB6 che permette di ricercare quelle parole caratteristiche all'interno dei file per avere un elenco dei soli file in cui è presente la parola ricercata, però c'è il problema che vorrei sapere se è possibile risolvere: ad esempio ammettiamo che voglio ricercare la parola "Pippo", questi ODT sono formati così “ Øi-Š¡û F ¡¶dHrœüýÉŽ” e la parola “Pippo” la si vede solo se si apre il file normalmente ma se lo si apre in txt non la si trova.
Quindi vorrei sapere se è possibile risolvere questo problema ed eventualmente come.

Grazie e saluti.

4 Risposte

  • Re: Ricercare parole nei file odt

    Un file ".odt" non e' niente altro che un file ZIP: lo puoi "unzippare"!

    Dentro ci trovi le immagini, diversi file XML, e qualche altro file di servizio.

    Altre informazioni ti tocca cercarle nella documentazione ufficiale del formato.
  • Re: Ricercare parole nei file odt

    Ok grazie.

    ho aggiunto al file esempio.odt l'estensione .zip, l'ho aperto con winrar e mi ha dato un elenco di file come hai detto precedentemente e nel file content.xml ci sono le parole in "italiano" quindi "Pippo" nell'esempio.
    A questo punto ci vorrebbe una "funzione" (o altro modo) di vb per estrapolare il file content.xml da ogni file odt dell'elenco di una cartella, per poterne leggere il contenuto ed effettuare le ricerche.
    VB permette di fare le estrapolazioni?
  • Re: Ricercare parole nei file odt

    Salve Gionatan,

    Hai risolto il tuo problema? Senno, fammi sapere, ho un programmino che fa l'estrazione.
  • Re: Ricercare parole nei file odt

    Ciao grazie.
    Si sono riuscito a risolvermi da solo con delle ricerche ed ho fatto in questo modo:
    i file xml sono di tipo archivio quindi posso utilizzare WinRAR.exe per estrarre i “sottofile” Content.xml e Styles.xml che hanno il contenuto testo e le indicazioni per la formattazione e il “sottofile” Thumbnail.png immagine anteprima che si trova nella "sottocartella" archivio \Thumbnail\, dopodichè i file xml possono essere letti come file di testo, riporto il codice che ho messo nel mio programmino così può essere utile a chi cerca qualcosa del genere:
    
    FileWINRAR = "C:\Program Files\WinRAR\WinRAR.exe"
    FileDaEstrarre = "-@ Content.xml -@ Styles.xml -@ Thumbnails\Thumbnail.png"
    FileODT = "C:\Prova ODT\FileProva.odt"
    CartellaFileEstratti = "C:\Prova ODT\fileodt_estratti\"
        
    VarWINRAR = FileWINRAR & " E -Y -IBCK " & Chr(34) & FileODT & Chr(34) & " " & FileDaEstrarre & " " 
    & Chr(34) & CartellaFileEstratti & Chr(34)
    H = Shell(VarWINRAR, vbMinimizedNoFocus)
    
    Precisazioni:
    - la stringa VarWINRAR comprende tutti i comandi e opzioni che possono essere digitati nella linea di comando “Dos”, le informazioni sono nelle info proprie di WinRAR.exe;
    - la CartellaFileEstratti è la cartella di destinazione in cui vengono estratti i file e il nome deve sempre terminare con “\” altrimenti WinRAR.exe non riesce a capire che è una cartella;
    - i nomi dei file e delle cartelle è meglio se vengono racchiusi da Chr(34) per far si che gli spazi nei nomi non vengano interpretati come spazi per i comandi.

    Quindi dopo che è stata eseguita la Shell che avvia WinRAR.exe per l'estrazione dei file da me elencati in FileDaEstrarre ed estratti in CartellaFileEstratti, posso mettere il contenuto di testo del file Styles.xml nella variabile VarLeggiFile ed effettuarne la ricerca:
    
    NumFile = FreeFile
    Open CartellaFileEstratti & "styles.xml" For Input As #NumFile
    VarLeggiFile = Input(LOF(NumFile), #NumFile)
    Close #NumFile
    
    TestoDaRicercare = "Pippo"
    
    If InStr(VarLeggiFile, TestoDaRicercare) > 0 Then
        TestoTrovato = 1
    Else
        TestoTrovato = 0
    End If
    
    questo è il programmino:
Devi accedere o registrarti per scrivere nel forum
4 risposte