Se connecter / S'enregistrer
Votre question

VB.NET Données XML -> Excel

Tags :
  • Microsoft Excel
  • Programmation
Dernière réponse : dans Programmation
9 Juillet 2010 17:57:00

Bonjour,

J'aimerai transférer des données d'un fichier XML dans un classeur Excel tous ceci en VB.NET ,est ce que quelqu'un aurai une idée?

Merci d'avance !!

Autres pages sur : net donnees xml excel

a c 232 L Programmation
9 Juillet 2010 22:53:23

Salut,

Une solution simple est de transformer ton fichier XML en CSV, vu qu'Excel sait lire les CSV.
Pour faire un .xsl, tu as la possibilité d'utiliser du XML, il faut voir le format exact qu'Excel lit.
m
0
l
12 Juillet 2010 09:03:12

Oui, mais j'aimerais n'avoir que quelque données du fichier XML dans mon tableau Excel.
m
0
l
Contenus similaires
Pas de réponse à votre question ? Demandez !
a c 232 L Programmation
12 Juillet 2010 09:38:43

Ca ne change rien...
Tu as deux solutions en utilisant du CSV:
- soit tu parses le fichier XML en .Net et tu recréé un fichier CSV avec. Il faut noter que tu as des librairies qui te permettent de générer du CSV. Parce que le format CSV est un peu plus compliqué que de mettre juste une virgule entre les deux valeurs.
- soit tu utilises XSLT qui va transformer ton fichier XML en ce que tu veux (CSV par exemple). Tu as sur ce lien deux exemples de code XSLT qui font ça.


Et puis sinon, si tu veux transformer ton fichier XML en un fichier lisible par Excel, tu peux lire ce lien: http://articles.techrepublic.com.com/5100-10878_11-6163...
m
0
l
12 Juillet 2010 16:40:31

Je n'ai pas compris beaucoup de chose dans ces documents. Mais il me faut un code qui va s'exécuter à chaque fois que un de mes fichiers XML va être modifié pour avoir un tableau Excel mis a jour.
m
0
l
13 Juillet 2010 09:05:59

Pour le moment j'ai ceci :

  1. Imports System.Xml
  2. Imports System.IO
  3.  
  4. Public Class Form1
  5.  
  6. Public Sub Form1()
  7.  
  8. 'creation d'une nouvelle instance du membre xmldocument
  9. Dim XmlDoc As XmlDocument = New XmlDocument()
  10. XmlDoc.Load("C:\Users\toto.xml")
  11.  
  12. Dim element As XmlNodeList
  13. element = XmlDoc.DocumentElement.GetElementsByTagName("NewDataSet")
  14.  
  15. Dim noeud, noeudEnf As XmlNode
  16. Dim UrlSite As String
  17. Dim NomSite As String
  18.  
  19.  
  20. For Each noeud In element
  21. For Each noeudEnf In noeud.ChildNodes
  22. If noeudEnf.LocalName = "PropertyIdentifier" Then
  23. UrlSite = noeudEnf.InnerText
  24. Else
  25. If (noeudEnf.LocalName = "PropertyValue") Then
  26. NomSite = noeudEnf.InnerText
  27. End If
  28. End If
  29. MsgBox(NomSite & " à " & UrlSite)
  30.  
  31. Next
  32. Next
  33.  
  34. End Sub
  35.  
  36. End Class


Cela devrai fonctionner non ?? Il devrait m'afficher un message box
m
0
l
a c 232 L Programmation
13 Juillet 2010 09:32:27

Tout dépend à quoi ressemble ton fichier XML...
Ta ligne 13 me parait bizarre, si ton fichier XML est un dataset sérialisé, tu auras NewDataSet en tant que DocumentElement.
Donc tu ne pourras pas faire XmlDoc.DocumentElement.GetElementsByTagName("NewDataSet")

J'aurais plutôt mis element = XmlDoc.DocumentElement.ChildNodes à cette ligne 13, mais c'est sans avoir regardé ton fichier XML...
m
0
l
13 Juillet 2010 09:44:04

Mon code XML est:

  1. <?xml version="1.0" standalone="yes"?>
  2. <NewDataSet>
  3. <DictationProperties>
  4. <PropertyIdentifier>SpecialInstructionsLength</PropertyIdentifier>
  5. <PropertyValue>0</PropertyValue>
  6. </DictationProperties>
  7. <DictationProperties>
  8. <PropertyIdentifier>DictationLength</PropertyIdentifier>
  9. <PropertyValue>2624</PropertyValue>
  10. </DictationProperties>
  11. <DictationProperties>
  12. <PropertyIdentifier>CreationDateTime</PropertyIdentifier>
  13. <PropertyValue>2010-01-28 09:16:18</PropertyValue>
  14. </DictationProperties> ...

m
0
l
a c 232 L Programmation
13 Juillet 2010 10:58:53

Donc c'est bien ce que je disais.
Vu que NewDataSet est ton élément root, si tu fais XmlDoc.DocumentElement, ça va te retourner ton noeud NewDataSet.
Donc, si tu fais XmlDoc.DocumentElement.GetElementsByTagName("NewDataSet"), ça va te retourner rien du tout.

Tu dois soit faire (je préfère utiliser SelectNodes que GetElementsByTagName) :
  1. element = XmlDoc.DocumentElement.SelectNodes("DictationProperties")

soit faire
  1. element = XmlDoc.DocumentElement.ChildNodes


Et au passage, appeler "element" une variable de type XmlNodeList, c'est confu...
m
0
l
13 Juillet 2010 11:06:21

Dac merci, mais normalement je devrai avoir dans un message box, les éléments de mon fichier XML, mais pas de message qui s'affiche ...
m
0
l
13 Juillet 2010 11:41:54

J'en suis ici :

  1. Imports System.Xml
  2. Imports System.IO
  3.  
  4. Public Class Form1
  5.  
  6. Public Sub Form1()
  7.  
  8. 'creation d'une nouvelle instance du membre xmldocument
  9. Dim XmlDoc As XmlDocument = New XmlDocument()
  10. XmlDoc.Load("C:\Users\Philippe\Documents\speechexec\a_finish\philippe069.ds2.xml")
  11.  
  12. Dim XmlNodeList As XmlNodeList
  13. 'element = XmlDoc.DocumentElement.GetElementsByTagName("NewDataSet")
  14. XmlNodeList = XmlDoc.DocumentElement.SelectNodes("DictationProperties")
  15.  
  16. Dim noeud, noeudEnf As XmlNode
  17. Dim PropertyIdentifier As String
  18. Dim PropertyValue As String
  19.  
  20. For Each noeud In XmlNodeList
  21. For Each noeudEnf In noeud.ChildNodes
  22. If noeudEnf.LocalName = "PropertyIdentifier" Then
  23. PropertyIdentifier = noeudEnf.InnerText
  24. Else
  25. If (noeudEnf.LocalName = "PropertyValue") Then
  26. PropertyValue = noeudEnf.InnerText
  27. End If
  28. End If
  29.  
  30. Next
  31. Next
  32.  
  33. End Sub
  34.  
  35. Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  36. Dim PropertyIdentifier As String
  37. Dim PropertyValue As String
  38. MessageBox.Show(PropertyValue & " à " & PropertyIdentifier)
  39. End Sub
  40.  
  41. End Class


Mai dans mon MessageBox il ne me retourne pas les valeurs de mon fichier XML.
m
0
l
a c 232 L Programmation
13 Juillet 2010 11:48:51

Euh, tu m'expliques comment tu veux qu'il te retourne les valeurs de ton fichier XML ?

Dans ton constructeur, tu créés 2 variables PropertyIdentifier et PropertyValue, que tu initialises autant de fois qu'il y a des noeuds DictationProperties.
Tes 2 variables sont locales au constructeur, donc une fois sorti du constructeur, elles n'existent plus.

Et dans ton évènement Click, tu recréé deux variables PropertyIdentifier et PropertyValue, sans les initialiser, et tu affiches leur valeur, qui doit être "Nothing" en VB.

Si tu fais ça :
  1. Public Sub Form1()
  2. 'creation d'une nouvelle instance du membre xmldocument
  3. Dim XmlDoc As XmlDocument = New XmlDocument()
  4. XmlDoc.Load("C:\Users\Philippe\Documents\speechexec\a_finish\philippe069.ds2.xml" )
  5. Dim XmlNodeList As XmlNodeList
  6. 'element = XmlDoc.DocumentElement.GetElementsByTagName("NewDataSet" )
  7. XmlNodeList = XmlDoc.DocumentElement.SelectNodes("DictationProperties" )
  8. Dim noeud, noeudEnf As XmlNode
  9. Dim PropertyIdentifier As String
  10. Dim PropertyValue As String
  11. For Each noeud In XmlNodeList
  12. For Each noeudEnf In noeud.ChildNodes
  13. If noeudEnf.LocalName = "PropertyIdentifier" Then
  14. PropertyIdentifier = noeudEnf.InnerText
  15. Else
  16. If (noeudEnf.LocalName = "PropertyValue" ) Then
  17. PropertyValue = noeudEnf.InnerText
  18. End If
  19. End If
  20. Next
  21. Next
  22. MessageBox.Show(PropertyValue & " à " & PropertyIdentifier)
  23. End Sub


Est-ce que ça marche (j'ai juste ajouté l'avant dernière ligne) ?
Ca devrait t'afficher une seule message box avec les derniers résultats de ton fichier XML.
m
0
l
13 Juillet 2010 11:59:52

Non je n'ai toujours pas de message box qui s'affiche. Mais j'ai en vert " PropertyValue & " à " & PropertyIdentifier " et disent qu'il sont déjà utilisé précédemment.
m
0
l
13 Juillet 2010 14:01:39

C'est bon, merci beaucoup !! Maintenant j'ai besoin d'envoyer toute cest valeur dans un fichier Excel à la place du MessageBox, une idée ??
m
0
l
a c 232 L Programmation
13 Juillet 2010 14:15:39

Bah ça, c'est ce que je t'ai dit dans mes 1ers messages.
m
0
l
13 Juillet 2010 14:32:55

Mais mon problème c'est que le fichier Excel que j'aurai, il devra contenir des valeurs de plusieurs fichier XML, alors si je le convertis je n'aurai que les valeur d'un fichier XML à chaque fois.

Je ne peut pas garder les valeurs que je récupère du fichier XML et les envoyer dans un tableau Excel?
m
0
l
a c 232 L Programmation
13 Juillet 2010 17:55:26

Tu écris les données sous format CSV, tu sauvegardes et tu peux ouvrir avec Excel. (dis dans ma première réponse...)
m
0
l
13 Juillet 2010 17:59:57

et on peut faire ca automatiquement?
m
0
l
a c 232 L Programmation
13 Juillet 2010 19:09:54

Bah un fichier CSV c'est juste des données séparées par point-virgule. Tu mets le nom des colonnes dans la première ligne du fichier.
Après, chaque donnée se retrouvera dans une colonne différente. Un saut de ligne pour commencer une nouvelle ligne et c'est fini.

T'as qu'à créer un fichier toto.csv sur ton bureau avec ces données et tu l'ouvres avec Excel:
  1. Nom;Prénom;Age
  2. Toto;Tata;18
  3. Titi;Tutu;24
  4. Tété;Tyty;32


Sinon, il faut regarder le format XML accepté par Excel, et le recréer manuellement, mais ça sera certainement beaucoup plus compliqué que ça.


A noter que tu as des outils qui te permettent de créer des fichiers CSV facilement (parce que c'est un peu plus compliqué que ça, au cas où t'as une donnée sur plusieurs lignes, ou si t'as un point virgule dans les données, etc...). Une petite recherche sur google te donnera ça.
m
0
l
15 Juillet 2010 09:18:22

Comment créer un fichier .csv et pouvoir entrer des valeurs de mon fichier xml?
m
0
l
15 Juillet 2010 10:44:08

Désolé je suis débutant, mais il me mette que Server et Response ne sont pas, mais je ne sait pas comment les déclarer, il y a plusieurs proposition. "Generate method, Generate Property ..."
m
0
l
a c 232 L Programmation
15 Juillet 2010 11:17:43

Oui pardon, c'est pour de l'ASP.Net...

Quelque chose dans ce genre:
  1. Dim fs As FileStream = Nothing
  2. Dim sw As StreamWriter = Nothing
  3. Dim separator AS String = ";"
  4. Dim nomFichier AS String = "C:\\fichier.csv"
  5.  
  6. Try
  7.  
  8. 'Supprime le fichier cible si existant
  9. If File.Exists(nomFichier) Then IO.File.Delete(nomFichier)
  10.  
  11. 'Ouvre/crée le fichier
  12. fs = New FileStream(nomFichier, FileMode.CreateNew, FileAccess.Write)
  13. sw = New StreamWriter(fs, System.Text.Encoding.UTF7)
  14.  
  15. 'Ecrit les entêtes de colonnes
  16. sw.WriteLine("Column1" & separator & "Column2" & separator & "Column3")
  17.  
  18. 'Ecrit les lignes
  19. sw.WriteLine("valeur1" & separator & "toto" & separator & "ma valeur")
  20. sw.WriteLine("ligne2" & separator & "tata" & separator & "titi")
  21. sw.WriteLine("ligne3" & separator & "arf" & separator & "jifrej")
  22.  
  23. Finally
  24.  
  25. 'Libération des ressources
  26. If sw IsNot Nothing Then sw.Close()
  27. If sw IsNot Nothing Then sw.Dispose()
  28. If fs IsNot Nothing Then fs.Dispose()
  29.  
  30. End Try
m
0
l
15 Juillet 2010 11:30:34

Merci beaucoup, quelque petit réglages et ca ria. Mais comment remplacer par exemple "valeur1" , "toto", "ma valeur" sur la première ligne par les éléments de mon fichier XML, c'est ca que je ne comprend pas.
m
0
l
a c 232 L Programmation
15 Juillet 2010 11:45:19

Bah les éléments de ton fichier XML, tu arrives à les récupérer... pourquoi tu serais pas capable de les écrire à la place ?
m
0
l
15 Juillet 2010 14:05:01

Je ne sais pas comment récupérer les élément du fichier XML pour l'envoyer dans Excel.

ici :
  1. MessageBox.Show(PropertyValue & " à " & PropertyIdentifier)


vers :
  1. sw.WriteLine("..." & separator & "..." & separator & "...")
m
0
l
a c 232 L Programmation
15 Juillet 2010 14:28:05

  1. sw.WriteLine(PropertyValue & separator & PropertyIdentifier)


...
m
0
l
15 Juillet 2010 14:49:27

J'ai fait sa et j'ai du ajouter :

  1. Public Class Form1
  2.  
  3. Dim PropertyIdentifier As String
  4. Dim PropertyValue As String


Les deux ligne du bas. Mais quand je lis mon fichier aucune valeur dans ma feuille Excel.

Et puis mon fichier XML est :
  1. <PropertyIdentifier>Custom1</PropertyIdentifier>
  2. <PropertyValue>Bob</PropertyValue>
  3. </DictationProperties>
  4. <DictationProperties>
  5. <PropertyIdentifier>Custom2</PropertyIdentifier>
  6. <PropertyValue>28/05/1988</PropertyValue>
  7. </DictationProperties>


Pour récupérer les valeurs :
  1. For Each noeud In XmlNodeList
  2. For Each noeudEnf In noeud.ChildNodes
  3. If noeudEnf.LocalName = "PropertyIdentifier" Then
  4. PropertyIdentifier = noeudEnf.InnerText
  5. Else
  6. If (noeudEnf.LocalName = "PropertyValue") Then
  7. PropertyValue = noeudEnf.InnerText
  8. End If
  9. End If
  10. Next
  11.  
  12. If PropertyIdentifier = "Custom1" Then
  13. MessageBox.Show(PropertyIdentifier & " = " & PropertyValue)
  14. End If
  15. If PropertyIdentifier = "Custom2" Then
  16. MessageBox.Show(PropertyIdentifier & " = " & PropertyValue)
  17. End If
  18. If PropertyIdentifier = "Custom3" Then
  19. MessageBox.Show(PropertyIdentifier & " = " & PropertyValue)
  20. End If
  21. If PropertyIdentifier = "Custom4" Then
  22. MessageBox.Show(PropertyIdentifier & " = " & PropertyValue)
  23. End If
  24. Next


Mais pour les afficher une part une dans un tableau, comment faire ?
m
0
l
15 Juillet 2010 16:01:03

Probleme résolu, il me manque comment écrire en colonne et non en ligne...
m
0
l
a c 232 L Programmation
15 Juillet 2010 16:20:09

Fais voir ton code entier
m
0
l
15 Juillet 2010 16:26:24

  1. Imports System.Xml
  2. Imports System.IO
  3. Imports Microsoft.Office.Interop
  4. Imports Microsoft.Office.Interop.Excel
  5.  
  6.  
  7. Public Class Form1
  8.  
  9.  
  10. Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  11. Dim separator As String = ";"
  12. Dim fs As FileStream = Nothing
  13. Dim sw As StreamWriter = Nothing
  14. Dim nomFichier As String = "C:\Users\Philippe\Documents\speechexec\a_finish\Test.csv"
  15. Dim noeud, noeudEnf As XmlNode
  16. Dim PropertyIdentifier As String
  17. Dim PropertyValue As String
  18.  
  19.  
  20.  
  21. Try
  22.  
  23. 'Supprime le fichier cible si existant
  24. If File.Exists(nomFichier) Then IO.File.Delete(nomFichier)
  25.  
  26. 'Ouvre/crée le fichier
  27. fs = New FileStream(nomFichier, FileMode.CreateNew, FileAccess.Write)
  28. sw = New StreamWriter(fs, System.Text.Encoding.UTF8)
  29.  
  30. 'Ecrit les entêtes de colonnes
  31. sw.WriteLine("N° Dossier" & separator & "Nom" & separator & "Prenom" & separator & "Date Naissance")
  32.  
  33. 'Ecrit les lignes
  34.  
  35.  
  36. 'creation d'une nouvelle instance du membre xmldocument
  37. Dim XmlDoc As XmlDocument = New XmlDocument()
  38. XmlDoc.Load("C:\Users\Philippe\Documents\speechexec\a_finish\WelcomeToSpeechExec.dss.xml")
  39.  
  40. Dim XmlNodeList As XmlNodeList
  41. XmlNodeList = XmlDoc.DocumentElement.SelectNodes("DictationProperties")
  42.  
  43.  
  44.  
  45.  
  46. For Each noeud In XmlNodeList
  47. For Each noeudEnf In noeud.ChildNodes
  48. If noeudEnf.LocalName = "PropertyIdentifier" Then
  49. PropertyIdentifier = noeudEnf.InnerText
  50. Else
  51. If (noeudEnf.LocalName = "PropertyValue") Then
  52. PropertyValue = noeudEnf.InnerText
  53. End If
  54. End If
  55. Next
  56.  
  57. If PropertyIdentifier = "Custom1" Then
  58. MessageBox.Show(PropertyIdentifier & " = " & PropertyValue)
  59. sw.WriteLine(PropertyValue & separator & "..." & separator & "..." & separator & "...")
  60. End If
  61. If PropertyIdentifier = "Custom2" Then
  62. MessageBox.Show(PropertyIdentifier & " = " & PropertyValue)
  63. sw.WriteLine(PropertyValue & separator & "..." & separator & "..." & separator & "...")
  64. End If
  65. If PropertyIdentifier = "Custom3" Then
  66. MessageBox.Show(PropertyIdentifier & " = " & PropertyValue)
  67. sw.WriteLine(PropertyValue & separator & "..." & separator & "..." & separator & "...")
  68. End If
  69. If PropertyIdentifier = "Custom4" Then
  70. MessageBox.Show(PropertyIdentifier & " = " & PropertyValue)
  71. sw.WriteLine(PropertyValue & separator & "..." & separator & "..." & separator & "...")
  72. End If
  73. Next
  74.  
  75.  
  76. Finally
  77.  
  78. 'Libération des ressources
  79. If sw IsNot Nothing Then sw.Close()
  80. If sw IsNot Nothing Then sw.Dispose()
  81. If fs IsNot Nothing Then fs.Dispose()
  82.  
  83. End Try
  84.  
  85.  
  86. End Sub
  87. End Class


Le problème est juste qu'il change de ligne pour m'écrire la valeur de Custom1 Custom2 ... alors que j'aimerai qu'il change juste de colonne.
m
0
l
a c 232 L Programmation
15 Juillet 2010 16:55:33

Forcément, WriteLine permet d'écrire une nouvelle ligne (d'où son nom...)

Mais au final, tu veux un tableau Excel qui ressemble à quoi ?
Tu as l'air de vouloir 4 colonnes (N° Dossier, Nom, Prenom et Date Naissance)

Et Custom1, Custom2, Custom3, Custom4 correspondent à quoi ?
m
0
l
15 Juillet 2010 17:00:43

Voila j'ai 4 colonnes (N° Dossier, Nom, Prénom et Date Naissance)
Et :
Custom1 est égale à un N° Dossier
Custom2 est égale à un Nom
Custom3 est égale à un Prénom
...

Et je veux les caser juste en dessous.
m
0
l
a c 232 L Programmation
15 Juillet 2010 18:21:07

Alors... Je vais un peu arranger pour utiliser Using plutôt que le block Try / Finally.
Je suis pas habitué au VB.Net aussi, c'est pour ça :)  (Qu'est ce que c'est moche du VB :( )

  1. Imports System.Xml
  2. Imports System.IO
  3. Imports Microsoft.Office.Interop
  4. Imports Microsoft.Office.Interop.Excel
  5. Public Class Form1
  6. Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  7. Dim separator As String = ";"
  8. Dim nomFichier As String = "C:\Users\Philippe\Documents\speechexec\a_finish\Test.csv"
  9. Dim noeud, noeudEnf As XmlNode
  10. Dim PropertyIdentifier As String
  11. Dim PropertyValue As String
  12. Dim NoDossier, Nom, Prenom, DateNaissance As String
  13. 'Supprime le fichier cible si existant
  14. If File.Exists(nomFichier) Then IO.File.Delete(nomFichier)
  15.  
  16. 'Ouvre/crée le fichier
  17. Using fs As FileStream = New FileStream(nomFichier, FileMode.CreateNew, FileAccess.Write)
  18. Using sw As StreamWriter = New StreamWriter(fs, System.Text.Encoding.UTF8)
  19. 'Ecrit les entêtes de colonnes
  20. sw.WriteLine("N° Dossier" & separator & "Nom" & separator & "Prenom" & separator & "Date Naissance")
  21.  
  22. 'Ecrit les lignes
  23. Dim XmlDoc As XmlDocument = New XmlDocument()
  24. XmlDoc.Load("C:\Users\Philippe\Documents\speechexec\a_finish\WelcomeToSpeechExec.dss.xml" )
  25. Dim XmlNodeList As XmlNodeList
  26. XmlNodeList = XmlDoc.DocumentElement.SelectNodes("DictationProperties" )
  27.  
  28. For Each noeud In XmlNodeList
  29. For Each noeudEnf In noeud.ChildNodes
  30. If noeudEnf.LocalName = "PropertyIdentifier" Then
  31. PropertyIdentifier = noeudEnf.InnerText
  32. Else
  33. If (noeudEnf.LocalName = "PropertyValue" ) Then
  34. PropertyValue = noeudEnf.InnerText
  35. End If
  36. End If
  37. Next
  38.  
  39. If PropertyIdentifier = "Custom1" Then
  40. NoDossier = PropertyValue
  41. End If
  42. If PropertyIdentifier = "Custom2" Then
  43. Nom = PropertyValue
  44. End If
  45. If PropertyIdentifier = "Custom3" Then
  46. Prenom = PropertyValue
  47. End If
  48. If PropertyIdentifier = "Custom4" Then
  49. DateNaissance = PropertyValue
  50. End If
  51.  
  52. sw.WriteLine(NoDossier & separator & Nom & separator & Prenom & separator & DateNaissance)
  53. Newt
  54. End Using
  55. End Using
  56. End Sub
  57. End Class
m
0
l
16 Juillet 2010 09:10:37

Un grand MERCI !! Juste un problème avec la ligne :
  1. sw.WriteLine(NoDossier & separator & Nom & separator & Prenom & separator & DateNaissance)


Il faut la mettre après le Next.

Une dernière question :

Dans le logiciel j'aurai ouvert un fichier par exemple : WelcomeToSpeechExec.dss et quand j'appuierai sur Terminé, mon logiciel va créer un fichier WelcomeToSpeechExec.dss.xml ( ce qui est deja fait ) et va retransmettre les données de se XML dans un tableau Excel ( ce qui est deja fait aussi), mais comment à la place de :
  1. XmlDoc.Load("C:\Users\Philippe\Documents\speechexec\a_finish\WelcomeToSpeechExec.dss.xml" )

Je peux mettre le meme nom de fichier qui sera ici "WelcomeToSpeechExec.dss" +".xml" car quand je vais lancer mon programme là, je n'aurai que les données de WelcomeToSpeechExec.dss qui seront inscrites dans mon tableau. Mais je peux avoir comme nom de fichier "toto.dss"

J'espère que tu as compris, car j'explique très très mal.
m
0
l
a c 232 L Programmation
16 Juillet 2010 10:02:48

C'est vrai, j'avais mal placé la ligne WriteLine :) 


Tu veux dire que quand tu fais
  1. XmlDoc.Load("C:\Users\Philippe\Documents\speechexec\a_finish\WelcomeToSpeechExec.dss.xml" )

il ouvre le fichier WelcomeToSpeechExec.dss et pas WelcomeToSpeechExec.dss.xml ?
m
0
l
16 Juillet 2010 10:16:30

Non il ouvre bien WelcomeToSpeechExec.dss.xml mais je veux a la place de WelcomeToSpeechExec.dss une variable du genre "nomfichier".xml qui va chercher le nom du fichier qui est ouvert par exemple WelcomeToSpeechExec.dss ou toto.dss et qui va choisir WelcomeToSpeechExec.dss.xml ou toto.dss.xml et qui va ajouter les données xml dans le tableau.
m
0
l
a c 232 L Programmation
16 Juillet 2010 11:17:20

Il ne peut pas savoir celui qui est ouvert...
Tu peux par exemple, lister tous les fichiers du dossier a_finish, et exécuter ça pour les fichiers, mais je vois pas comment savoir lequel est ouvert pour l'exécuter.
m
0
l
16 Juillet 2010 11:33:25

Oui c'est bon aussi, ce code est bon pour faire ca :
  1. ' Fonction permettant de récupérer tous les fichiers se trouvant dans un dossier
  2. Private Function Recuperation_Fichier(ByVal NomDossier As String) As ArrayList
  3.  
  4. Dim i, j As Integer
  5. Dim ListeFichiers As ArrayList
  6. ListeFichiers = New ArrayList()
  7.  
  8. 'detection des fichiers
  9. Dim Fichiers As String()
  10. Fichiers = Directory.GetFiles(NomDossier)
  11. 'ajout à la collection
  12. For i = 0 To Fichiers.Length - 1
  13. ListeFichiers.Add(Fichiers(i))
  14. Next
  15.  
  16. 'detection de tous les dossiers
  17. Dim Dossiers As String()
  18. Dossiers = Directory.GetDirectories(NomDossier)
  19.  
  20. 'Récupération des fichiers se trouvant dans les dossiers
  21. Dim MesFichiers As ArrayList
  22. MesFichiers = New ArrayList()
  23.  
  24. For i = 0 To Dossiers.Length - 1
  25. ' récupération des fichiers
  26. MesFichiers = Recuperation_Fichier(Dossiers(i))
  27. ' ajout à la collection
  28. For j = 0 To MesFichiers.Count - 1
  29. ListeFichiers.Add(MesFichiers(j))
  30. Next
  31. Next
  32.  
  33. Return ListeFichiers
  34.  
  35. End Function
  36.  
  37.  
  38.  
  39. 'Fonction permettant de récuperer le fichier dss parmis les différents fichiers nouveaux
  40. Private Function RechercheDSS(ByVal FichiersAnciens As ArrayList, ByVal FichiersActuels As ArrayList)
  41. Dim i, j As Integer
  42. Dim nouveau As Boolean
  43. Dim NouveauxFichiers As ArrayList
  44. NouveauxFichiers = New ArrayList()
  45.  
  46. 'Recherche des nouveaux fichiers
  47. For i = 0 To FichiersActuels.Count - 1
  48. nouveau = True
  49. ' Regarde si le fichier trouvé est identique à un ancien fichier
  50. For j = 0 To FichiersAnciens.Count - 1
  51. If (FichiersActuels(i) = FichiersAnciens(j)) Then
  52. nouveau = False
  53. End If
  54. Next
  55. ' Si ce fichier n'était pas repertorié dans la liste des anciens fichiers, il est considéré comme nouveau
  56. If (nouveau) Then
  57. NouveauxFichiers.Add(FichiersActuels(i))
  58. End If
  59. Next
  60.  
  61.  
  62. 'Recherche du fichier dss
  63. Dim NomRenvoye As String = ""
  64. Dim NomFichier As String
  65.  
  66. For i = 0 To NouveauxFichiers.Count - 1
  67. NomFichier = NouveauxFichiers(i)
  68. If (NomFichier.Substring(NomFichier.Length - 4, 4) = ".xml") Then
  69. NomRenvoye = NomFichier
  70. End If
  71. Next
  72.  
  73.  
  74. Return NomRenvoye
  75.  
  76. End Function
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS