Importer Datagridview a Word [Résolu]

Messages postés
57
Date d'inscription
jeudi 23 février 2017
Dernière intervention
10 mai 2017
- - Dernière réponse : wayne2017
Messages postés
57
Date d'inscription
jeudi 23 février 2017
Dernière intervention
10 mai 2017
- 10 mai 2017 à 21:10
Bonjour,
je voudrais importer ma datagridview dans un fichier Word mais a chaque fois le code me dit ceci : Impossible d'effectuer un cast d'un objet de type 'System.Data.DataSet' en type 'System.Data.DataTable'. s'il vous plait pourriez me dire ou ce trouve l'erreur merci bien



Dim datatabl As New System.Data.DataTable
datatabl = DataGridViewMachine.DataSource

Dim oWord = New Word.Application With {.Visible = True}
Dim oDocs As Word.Document = oWord.Documents.Open("D:\sample.docx")
Dim otable As Word.Table
otable = oDocs.Tables.Add(oDocs.Bookmarks.Item("\endofdoc").Range, datatabl.Rows.Count + 1, datatabl.Columns.Count)
For c = 0 To datatabl.Columns.Count - 1
otable.Cell(1, c + 1).Range.Text = datatabl.Columns(c).ToString
Next

For r = 0 To datatabl.Rows.Count - 1
For c = 0 To datatabl.Columns.Count - 1
otable.Cell(r + 2, c + 1).Range.Text = datatabl.Rows(r).Item(c).ToString
Next
Next
otable.Borders.InsideLineStyle = Word.WdLineStyle.wdLineStyleSingle
otable.Borders.OutsideLineStyle = Word.WdLineStyle.wdLineStyleSingle
oDocs.Close(SaveChanges:=True)
oDocs = Nothing
oWord.Quit()
oWord = Nothing
GC.Collect()
GC.WaitForFullGCComplete()



Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
5592
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
8 décembre 2018
1
Merci
Voilà avec une base Access:


Option Strict On
Imports System.Data.OleDb
Imports Microsoft.Office.Interop
Imports Microsoft.Office.Interop.Word
Public Class Form1
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        'Mise en place d'un objet OpenFileDialog pour ouvrir un fichier 
        Dim openFD As New OpenFileDialog
        With openFD
            .Filter = "Access Files  (*.accdb,*.mdb )|*.accdb;*.mdb"
            .FilterIndex = 1
            .Title = "Sélectionnez le fichier Access que vous souhaitez ouvrir."
            DialogResult = .ShowDialog
            If DialogResult = System.Windows.Forms.DialogResult.OK Then
                Dim ds As New DataSet()
                ds.Clear()
                DataGridView1.Columns.Clear()
                ' Cheminsource = (.FileName) 'chemin complet fichier source
                ' Please be sure of the database path, I suppose it will be in the same folder where the application exe file is in (usually should be in 'YourProjectPath\bin\debug')
                Dim MyConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & .FileName
                ' Generating the DataSet and the DataAdapter

                ' All 'Customers' table's columns could fit in one page
                Dim da As OleDbDataAdapter = New OleDbDataAdapter("SELECT * FROM Customers", MyConnectionString)
                ' All 'Customers2' table's columns could fit in two page
                'Dim da As New OleDbDataAdapter("SELECT * FROM Customers2", MyConnectionString)
                Try
                    da.Fill(ds, "dt")
                Catch ex As Exception
                    MessageBox.Show("Operation failed: " + ex.ToString(), " - Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
                    Return
                End Try

                ' Setting the style of the DataGridView control
                'DataGridView1.ColumnHeadersDefaultCellStyle.Font = New Font("Tahoma", 9, FontStyle.Bold, GraphicsUnit.Point)
                DataGridView1.ColumnHeadersDefaultCellStyle.BackColor = SystemColors.ControlDark
                DataGridView1.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.[Single]
                DataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
                ' DataGridView1.DefaultCellStyle.Font = New Font("Tahoma", 8, FontStyle.Regular, GraphicsUnit.Point)
                DataGridView1.DefaultCellStyle.BackColor = Color.Empty
                DataGridView1.AlternatingRowsDefaultCellStyle.BackColor = SystemColors.ControlLight
                DataGridView1.CellBorderStyle = DataGridViewCellBorderStyle.[Single]
                DataGridView1.GridColor = SystemColors.ControlDarkDark

                ' Binding the DataGridViewControl to the DataSet generated above
                DataGridView1.DataSource = ds
                DataGridView1.DataMember = "dt"

                ' Changing the last column alignment to be in the Right alignment            
                DataGridView1.Columns(DataGridView1.Columns.Count - 1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight

                ' Adjusting each column to be fit as the content of all its cells, including the header cell
                DataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells)

                'DataGridView1.Columns[0].Visible = false;
            Else
                MessageBox.Show("Opération annulée par l'utilisateur!", "Chemin fichier", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Exit Sub
            End If
            .Dispose()
        End With
    End Sub
    Private Sub Importer()
        Dim objWord = New Word.Application With {.Visible = True}
        Dim objDoc As Word.Document = objWord.Documents.Open("C:\Users\LePivert\Documents\essai.docx")

        'objDoc = objWord.Documents.Add

        Dim _RowCount As Integer = DataGridView1.Rows.Count - 1
        Dim _ColCount As Integer = DataGridView1.Columns.Count - 1

        Dim ht1 As Word.Table

        ht1 = objDoc.Tables.Add(objDoc.Bookmarks.Item("\endofdoc").Range, _
                                _RowCount + 1, _ColCount + 1)
        ht1.Borders.OutsideColor = Word.WdColor.wdColorBlack
        ht1.Borders.OutsideLineStyle = Word.WdLineStyle.wdLineStyleSingle
        ht1.Borders.InsideColor = Word.WdColor.wdColorBlack
        ht1.Borders.InsideLineStyle = Word.WdLineStyle.wdLineStyleSingle
        Try
            For i As Integer = 0 To _RowCount
                For _col As Integer = 0 To _ColCount
                    Dim colType As Type = DataGridView1.Columns(_col).GetType
                    If colType.Name = "DataGridViewImageColumn" Then
                        Dim _image As Image = DirectCast(DataGridView1.Rows(i).Cells(_col).Value, Image)
                        Clipboard.SetImage(_image)
                        ht1.Cell(i + 1, _col + 1).Range.Paste()
                    Else
                        ht1.Cell(i + 1, _col + 1).Range.Text = DataGridView1.Rows(i).Cells(_col).Value.ToString()
                    End If
                Next
            Next
        Catch
        End Try
    End Sub
    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        Importer()
    End Sub
End Class


il suffit de chercher et d'adapter!

http://www.authorcode.com/export-the-content-of-datagridview-to-word-document-in-vb-net/

@+ Le Pivert

Merci cs_Le Pivert 1

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

Codes Sources a aidé 98 internautes ce mois-ci

wayne2017
Messages postés
57
Date d'inscription
jeudi 23 février 2017
Dernière intervention
10 mai 2017
-
J'ai su adapter en parallèle avec un autre programme il marche bien , merci encore
Commenter la réponse de cs_Le Pivert
Messages postés
5592
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
8 décembre 2018
wayne2017
Messages postés
57
Date d'inscription
jeudi 23 février 2017
Dernière intervention
10 mai 2017
-
Bonjour CS_Le Pivert

j'ai changer de méthode .car j'ai opter créer séparément
cs_Le Pivert
Messages postés
5592
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
8 décembre 2018
> wayne2017
Messages postés
57
Date d'inscription
jeudi 23 février 2017
Dernière intervention
10 mai 2017
-
Je dois te rappeler que nous sommes tous des bénévoles. Il serait bon d'avoir la politesse de répondre aux réponses qui te sont faites!
C'est la moindre des choses, si tu veux que l'on continue à te suivre!
wayne2017
Messages postés
57
Date d'inscription
jeudi 23 février 2017
Dernière intervention
10 mai 2017
> cs_Le Pivert
Messages postés
5592
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
8 décembre 2018
-
D'accord j'ai compris , je ferais bien ca
Commenter la réponse de cs_Le Pivert
Messages postés
57
Date d'inscription
jeudi 23 février 2017
Dernière intervention
10 mai 2017
0
Merci
Merci le cs _Le Pivert
Commenter la réponse de wayne2017
Messages postés
57
Date d'inscription
jeudi 23 février 2017
Dernière intervention
10 mai 2017
0
Merci
voici le lien de la page pour si jamais quelqu'un aurait besoin

http://www.vbforums.com/showthread.php?759311-Format-cell-in-word-Table-%28data-from-datagridview%29=
Commenter la réponse de wayne2017

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.