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

KMABAZ 3 Messages postés mercredi 6 mai 2015Date d'inscription 6 mai 2015 Dernière intervention - 6 mai 2015 à 11:14 - Dernière réponse : KMABAZ 3 Messages postés mercredi 6 mai 2015Date d'inscription 6 mai 2015 Dernière intervention
- 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 

Votre réponse

3 réponses

jordane45 21190 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 26 mai 2018 Dernière intervention - Modifié par jordane45 le 6/05/2015 à 12:02
0
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
Commenter la réponse de jordane45
KMABAZ 3 Messages postés mercredi 6 mai 2015Date d'inscription 6 mai 2015 Dernière intervention - 6 mai 2015 à 13:00
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
KMABAZ 3 Messages postés mercredi 6 mai 2015Date d'inscription 6 mai 2015 Dernière intervention - 6 mai 2015 à 14:49
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.