Lire le contenu d'un fichier word [Résolu]

Messages postés
3
Date d'inscription
mercredi 6 mai 2015
Statut
Membre
Dernière intervention
6 mai 2015
- - Dernière réponse : KMABAZ
Messages postés
3
Date d'inscription
mercredi 6 mai 2015
Statut
Membre
Dernière intervention
6 mai 2015
- 6 mai 2015 à 14:49
Bonjour,
je bute sur un problème. J'aimerai lire des tableaux contenus dans un fichier word et les enregistrer dans une base de données. Merci !!!!
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
26125
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 août 2019
314
1
Merci
Bonjour,


Créé une class et colles-y le code suivant :
Imports Microsoft.Office.Interop


Public Class msWord

    Public oWord As Microsoft.Office.Interop.Word.Application
    Public oDoc As Microsoft.Office.Interop.Word.Document

    Public Function openDoc(ByRef strDoc) As Object
        oWord = CreateObject("Word.Application")
        oWord.Visible = True
        oDoc = oWord.Documents.Open(strDoc)
        Return oWord
    End Function

    Public Function getTables() As Object
        Dim Tbl() As Microsoft.Office.Interop.Word.Table
        Dim i As Long
        Dim nbTbl As Long
        'Nombre de tableaux dans le document
        nbTbl = oDoc.Tables.Count
        ReDim Preserve Tbl(nbTbl - 1)

        For i = 1 To nbTbl
            Tbl(i - 1) = oDoc.Tables(i)
        Next

        Return Tbl
    End Function

    Public Function getValCell(ByRef Cellule As Object) As String
        Dim valeurCellule As String = ""
        valeurCellule = Cellule.Range.Text.ToString
        Return valeurCellule
    End Function

    Public Function docClose() As Boolean
        oDoc.Close()
        oDoc = Nothing
        Return True
    End Function

    Public Function getTbltoArray(ByRef Table) As Array
        Dim Cell As Object
        Dim valCell As String

        Dim nbRows As Long = Table.Rows.Count
        Dim nbCols As Long = Table.Columns.Count
        Dim arrResult(nbRows, nbCols) As String
        'Pour chaque ligne du tableau
        For i = 1 To nbRows
            'Pour chaque colonne...
            For j = 1 To nbCols
                Cell = Table.Columns(j).Cells(i)
                valCell = getValCell(Cell)
                arrResult(i, j) = valCell
            Next
        Next
        Return arrResult
    End Function

End Class




Ne pas oublier d'ajouter la référence à word ..

Add a reference to the Microsoft Word Object Library. To do this, follow these steps:
On the Project menu, click Add Reference.
On the COM tab, locate the Microsoft Word Object Library and click Select.


Dans ton code ( par exemple je l'ai mis dans un bouton d'un FORM )
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim fichier As String = "c:\tmp\test.docx"
        Dim wordClass As New msWord
        Dim Doc As Object
        Dim tables As Object

        Doc = wordClass.openDoc(fichier)
        tables = wordClass.getTables()

        For Each Tableau In tables 'pour chaque tableau du document
            Dim arrTbl As Array = wordClass.getTbltoArray(Tableau)
            For i = 1 To UBound(arrTbl)
                Console.WriteLine("----------------------")
                For j = 1 To UBound(arrTbl, 2)
                    Console.Write(arrTbl(i, j))
                Next
            Next
        Next

        'fermeture du classeur
        wordClass.docClose()
    End Sub


Bien entendu .. je n'ai fais qu'afficher le contenu du tableau...
A toi de coder l'enregistrement en BDD !

EDIT : Petite amélioration de la class.


Cordialement,
Jordane

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jordane45
Messages postés
3
Date d'inscription
mercredi 6 mai 2015
Statut
Membre
Dernière intervention
6 mai 2015
0
Merci
Merci jordane. je teste ton code et je te répondrai de suite. Merci c'est gentil
Commenter la réponse de KMABAZ
Messages postés
3
Date d'inscription
mercredi 6 mai 2015
Statut
Membre
Dernière intervention
6 mai 2015
0
Merci
J'ai testé ton code et cela marche. J'ai près de 52 tableau dans mon document. J'arrive à remplir ma base SQL, sauf qu'au bout d'un temps, il m'affiche une erreur dans la fonction gettbltoarray. je saurais resoudre cela, encore une fois merci et bonne journée....
Commenter la réponse de KMABAZ