merlin1977
Messages postés13Date d'inscriptionmardi 25 septembre 2007StatutMembreDernière intervention26 novembre 2012
-
26 nov. 2012 à 15:28
merlin1977
Messages postés13Date d'inscriptionmardi 25 septembre 2007StatutMembreDernière intervention26 novembre 2012
-
26 nov. 2012 à 18:44
Bonjour,
j'utilise le code ci-dessous pour exporter des données depuis des datagridview, tout fonctionne bien sous visual studio 2008 et tout fonctionne si j'importe un projet de visual studio 2008 vers visual studio 2010 mais si je crée le module dans visual studio 2010 ou que je l'importe j'ai beau bien référencer mon Excel... j'ai un message d'erreur :
Erreur 4 Impossible d'incorporer le type interop 'ApplicationClass'. Utilisez l'interface applicable à la place.
qui correspond à la ligne :
Dim excel As New Excel.ApplicationClass
Voir tout le code normalement fonctionnel ci-dessous
Imports Microsoft.Office.Interop
Module ExportExcell
'necessite la reference microsoft excel X object
Sub export(ByVal snamedatagridview As Object)
Try
If ((snamedatagridview.Columns.Count 0) Or (snamedatagridview.Rows.Count 0) Or (snamedatagridview.Rows.Count > 60000)) Then
Exit Sub
End If
'Creating dataset to export
Dim dset As New DataSet
'add table to dataset
dset.Tables.Add()
'add column to that table
For i As Integer = 0 To snamedatagridview.ColumnCount - 1
dset.Tables(0).Columns.Add(snamedatagridview.Columns(i).HeaderText)
Next
'add rows to the table
Dim dr1 As DataRow
For i As Integer = 0 To snamedatagridview.RowCount - 1
dr1 = dset.Tables(0).NewRow
For j As Integer = 0 To snamedatagridview.Columns.Count - 1
dr1(j) = snamedatagridview.Rows(i).Cells(j).Value
Next
dset.Tables(0).Rows.Add(dr1)
Next
Dim excel As New Excel.ApplicationClass
Dim wBook As Microsoft.Office.Interop.Excel.Workbook
Dim wSheet As Microsoft.Office.Interop.Excel.Worksheet
wBook = excel.Workbooks.Add()
wSheet = wBook.ActiveSheet()
Dim dt As System.Data.DataTable = dset.Tables(0)
Dim dc As System.Data.DataColumn
Dim dr As System.Data.DataRow
Dim colIndex As Integer = 0
Dim rowIndex As Integer = 0
For Each dc In dt.Columns
colIndex = colIndex + 1
excel.Cells(1, colIndex) = dc.ColumnName
Next
For Each dr In dt.Rows
rowIndex = rowIndex + 1
colIndex = 0
For Each dc In dt.Columns
colIndex = colIndex + 1
excel.Cells(rowIndex + 1, colIndex) = dr(dc.ColumnName)
Next
Next
wSheet.Columns.AutoFit()
Dim strFileName As String = Environment.CurrentDirectory & "\temp.xls"
Dim blnFileOpen As Boolean = False
Try
Dim fileTemp As System.IO.FileStream = System.IO.File.OpenWrite(strFileName)
fileTemp.Close()
Catch ex As Exception
blnFileOpen = False
End Try
If System.IO.File.Exists(strFileName) Then
System.IO.File.Delete(strFileName)
End If
wBook.SaveAs(strFileName)
excel.Workbooks.Open(strFileName)
excel.Visible = True
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
End Module
Merci de votre aide je me cogne la tête contre les murs....
Gros débutant cherche à progresser :)
A voir également:
How to export datagridview to excel in vb net 2010
merlin1977
Messages postés13Date d'inscriptionmardi 25 septembre 2007StatutMembreDernière intervention26 novembre 2012 26 nov. 2012 à 18:44
Merci beaucoup pour vos réponse ça marche parfaitement en mettant Dim excel As New Excel.Application
ce qui est hallucinant c'est que lorsqu'on importe un ancien projet de 2008 vers 2010 il garde l'ancien code et que là ça marche!!
Encore merci pour votre aide j'étais pas du tout parti sur une solution de ce type.