[VB 2008] utilisation fichier excel dans My.resources
bonsoir,
Utilisant des fichiers Excels dans mon application,
je souhaiterais intégrer les fichiers dans my.resources,
mon problème est le suivant :
je n'arrive pas à trouver la syntaxe pour utiliser les fichiers Excels qui ont
été déclaré dans My.resources
Si j'écrit les lignes suivantes :
Code:
1 2 3 4 5
| Dim appExcel As Object
Dim wbExcel As Object
appExcel = CreateObject("excel.application")
wbExcel = appExcel.Workbooks.Open(My.Resources.Gestion_pointage) |
Gestion_pointage étant le nom du fichier excel dans my.resources
L'erreur est la suivante :
Citation:
Le type ne correspond pas. (Exception de HRESULT : 0x80020005 (DISP_E_TYPEMISMATCH))
Quelqu'un aurait-il une idée ??
fichier Excel dans My.Resources
bonjour cedricbollini
c'est exotique puisque en resources binaires on peut mettre tout(excel,access,word et meme un .exe....) .
voici le bout de code qui fait le boulot.
On stocke le fichier Excel dans Resources du projet.Le fichier Excel resource doit etre compile avec dans l'exploration de solution avec option "resources incorporees".
Dans l'appli il sera lu en binaire et recree sous un autre nom(whatever you want) dans le dossier de l'appli ou ailleurs.
code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
'---------------------------------------------------------------------------
'Creer un fichier Excel avec System.Reflection
' et Methode shared AssemblyGetManifestResourceStream("namespace.nomfichier.ext"
'---------------------------------------------------------------------------
'NOTA-BENE:
'1/Recuperer la chaine namespace dans proprites du projet
'2/Proprietes Projet->Resources->Ajouter Fichier...
'3/Eplorateur Solution-> Fichier resource ->Proprietes
'- action de generation =>mettre resource incoporeee
Imports System
Imports System.Windows
Imports System.Reflection
Imports System.IO
Public Class Form1
'NB: le namespace n'est pas accesible dans System.Reflection
'sera code en "dur".Ici ce sera "ExcelResources"
'Nom Dossier application
Dim DossierApplication As String = Directory.GetCurrentDirectory
'Nom du Fichier Excel apres Recuperation dans My.Resources
'Ce nom n'est pas forcement celui d'origine mais peut etre saisi par user
Dim nomFichierSave As String = "MonClasseur.xls"
Dim dot As String = "."
'---------------------------------------------------------------------------
'Afficher les namespaces courants de l'appli
'pour verifier eventuellement le namespace exact de l'appli
'---------------------------------------------------------------------------
Private Sub btnAfficheNameSpace_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAfficheNameSpace.Click
Dim noms() As String = Me.GetType().Assembly.GetManifestResourceNames()
For Each nom As String In noms
txtAfficherNameSpace.Text = txtAfficherNameSpace.Text & nom & vbCrLf
Next
End Sub
'---------------------------------------------------------------------------
'-------------------------Creation du Fichier Excel-------------------------------
'---------------------------------------------------------------------------
Private Sub btnCreeFichExcel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCreeFichExcel.Click
Dim objStream As Stream
Dim objAssembly As Assembly
Dim objFileStream As FileStream
'Dim objNameSpace As String
'Tableau octets pour recopie "octets par octets"
Dim OctetResources() As Byte = New Byte() {}
'Obtient Assembly de l'Application
objAssembly = Assembly.GetExecutingAssembly
'Nom du Fichier Excel original dans My.Resources
Dim nomFichierRes As String = "ClasseurDansResources.xls"
'Lecture de My.resources
'-----------------------
objStream = objAssembly.GetManifestResourceStream("ExcelResources" & dot & nomFichierRes)
If objStream IsNot Nothing Then
MessageBox.Show(objStream.Length.ToString)
End If
'Ecriture du fichier Excel recupere dans dossier Application
'-----------------------
ReDim OctetResources(objStream.Length)
objStream.Read(OctetResources, 0, objStream.Length)
objFileStream = New FileStream(DossierApplication & "\" & nomFichierSave, FileMode.Create)
objFileStream.Write(OctetResources, 0, objStream.Length)
End Sub
End Class |
BON CODE....