Enregistrer un Datagrid sous forme de fichier XML [Résolu]

Messages postés
121
Date d'inscription
jeudi 15 mai 2008
Dernière intervention
21 novembre 2013
- 14 août 2008 à 12:51 - Dernière réponse :
Messages postés
3288
Date d'inscription
jeudi 3 avril 2008
Dernière intervention
14 septembre 2014
- 14 août 2008 à 21:09
Bonjour à tous,
j'ai un datagrid qui contient des valeurs. Je voudrais enregistrer le datagrid sous forme de fichier XML, mais je n'y arrive pas. Quelqu'un peut-il m'aider ?

Merci
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
Messages postés
3288
Date d'inscription
jeudi 3 avril 2008
Dernière intervention
14 septembre 2014
- 14 août 2008 à 16:34
3
Merci
* Le code permet d'exporter le contenu d'une datagrdiview vers un fichier excel


'**






Imports




Microsoft.Office.Interop.Excel



Imports




Microsoft.Office.Core



Imports




Microsoft.VisualBasic



Imports




System



Imports




System.Collections.Generic



Imports




System.ComponentModel



Imports




System.Data



Imports




System.Text



Imports




System.Windows.Forms



Imports




System.Reflection



Public








Class

now



Private

oXL


As

Microsoft.Office.Interop.Excel.Application



Private

oWB


As

Microsoft.Office.Interop.Excel._Workbook



Private

oSheet


As

Microsoft.Office.Interop.Excel._Worksheet



Private

oRng


As

Microsoft.Office.Interop.Excel.Range



Private

M


As





Object

= System.Reflection.Missing.Value#



Region





"Enregistrer le fichier Excel sous"








Public





Sub

SaveAs(


ByVal

sNameFichier


As





String

)



Try


oWB.SaveAs(sNameFichier, M, M, M, M, M, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlShared, M, M, M, M, M)








Catch

e


As

ExceptionMessageBox.Show(e.Message)



End





Try








End





Sub


#





End





Region








Public





Function

Export(


ByRef

dtgv


As

DataGridView)



Dim

z


As

Int32 = 1



Dim

f


As





New

Formf.Width = 200

f.Height = 50

f.FormBorderStyle = FormBorderStyle.None



Dim

pgb


As





New

ProgressBarpgb.Parent = f

pgb.Dock = DockStyle.Fill

pgb.Style = ProgressBarStyle.Marquee

f.Show()

pgb.Value = pgb.Value + z



Dim

savefd1


As





New

SaveFileDialog



With

savefd1.AddExtension =



True


.DefaultExt =





".xlsx"


.CheckPathExists =





True


.DereferenceLinks =





True


.Filter =





"Excell 2007(*.xlsx)|*.xlsx"


.OverwritePrompt =





True


.ShowHelp =





True


.SupportMultiDottedExtensions =





True


.Title =





"Save as Excell 2007 file"


.ValidateNames =





True








End





With








Try








'Start Excel and get Application object.


oXL =





New

Microsoft.Office.Interop.Excel.Application()oXL.Visible =



False


pgb.Value = pgb.Value + z








'Get a new workbook.


oWB =





CType

(oXL.Workbooks.Add(System.Reflection.Missing.Value), Microsoft.Office.Interop.Excel._Workbook)oSheet =



CType

(oWB.ActiveSheet, Microsoft.Office.Interop.Excel._Worksheet)pgb.Value = pgb.Value + z



' Copier les noms des colonnes








Dim

i


As





Integer

= 0



For





Each

ch


As

DataGridViewColumn


In

dtgv.ColumnsoRng = oSheet.Range(Convert.ToChar(65 + i).ToString() &



"1"

, Missing.Value)oSheet.Cells(1, i + 1) = ch.Name.Trim()

oRng.Interior.ColorIndex = Microsoft.Office.Interop.Excel.XlColorIndex.xlColorIndexAutomatic

oRng.Font.Bold =



True


oRng.BorderAround(Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous, Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin, Microsoft.Office.Interop.Excel.XlColorIndex.xlColorIndexAutomatic, Missing.Value)


oRng.EntireColumn.AutoFit()


pgb.Value = pgb.Value + z


i += 1








Next

ch



' Copier toutes les cellules du datagridview








' j=2 on commence à la 2eme ligne dans le fichier excel








Dim

j


As





Integer

= 2



For





Each

uneLigne


As

DataGridViewRow


In

dtgv.Rowspgb.Value = pgb.Value + z

i = 1



' si i=1 alors 65-1+1 donne 65<=>A et ainsi on aura la lettre de la colonne puis on juxtapose le numero de la ligne








For





Each

uneColonne


As

DataGridViewColumn


In

dtgv.ColumnsoRng = oSheet.Range(Convert.ToChar(65 + i - 1).ToString() & j.ToString(), Missing.Value)

oSheet.Cells(j, i) = uneLigne.Cells(uneColonne.Name).Value.ToString().Trim()

oRng.BorderAround(Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous, Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin, Microsoft.Office.Interop.Excel.XlColorIndex.xlColorIndexAutomatic, Missing.Value)

oRng.EntireColumn.AutoFit()

i += 1

System.Windows.Forms.Application.DoEvents()



Next

uneColonneoSheet.Columns.AutoFit()

j += 1

System.Windows.Forms.Application.DoEvents()



Next

uneLigne



Catch








End





Try


f.Dispose()








If

savefd1.ShowDialog() = System.Windows.Forms.DialogResult.OK


Then








Try


SaveAs(savefd1.FileName)








Catch


MessageBox.Show(





"erreur"

)



End





Try








End





If


oXL.Quit()








Return





True








End





FunctionEnd







Class










'''


<summary>








''' code à coller dans ta form et à utiliser avec un menu ou un bouton








''' le parrametre datagv tu mets le nom de ta datagridview








'''


</summary>








'''












'''


<remarks></remarks>








Sub

usage(


ByVal

datagv


As

DataGridView)



Dim

ex


As





New

ExportXls.nowex.Export(datagv)

ex =



Nothing








End





Sub











Bonjour chez vous !

Merci gillardg 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 87 internautes ce mois-ci

Commenter la réponse de gillardg
Meilleure réponse
Messages postés
539
Date d'inscription
vendredi 6 juin 2003
Dernière intervention
14 juillet 2010
- 14 août 2008 à 16:46
3
Merci
Salut,
pourquoi tu lui dis que non en xml?
Si tu as un datagrid qui pointe vers dataset ou datatable tu peux faire.
exportDataset.WriteXml(SaveFileDialog1.FileName)
ou
exportDataset.Tables("tableName").WriteXml(SaveFileDialog1.FileName)
ou
datatable.WriteXml(SaveFileDialog1.FileName)
En utilisant un SaveFileDlg, ou un path en dur....
@+
youpi :)

Merci youpiyoyo 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 87 internautes ce mois-ci

Commenter la réponse de youpiyoyo
Messages postés
3288
Date d'inscription
jeudi 3 avril 2008
Dernière intervention
14 septembre 2014
- 14 août 2008 à 14:55
0
Merci
en xml , non
en excel oui enfin si tu veux hein moi je ne veux aps te forcer !

Bonjour chez vous !
Commenter la réponse de gillardg
Messages postés
121
Date d'inscription
jeudi 15 mai 2008
Dernière intervention
21 novembre 2013
- 14 août 2008 à 15:53
0
Merci
pas de problème, à défaut de chien on peut amener le chat à la chasse !
Commenter la réponse de KIPRE74
Messages postés
3288
Date d'inscription
jeudi 3 avril 2008
Dernière intervention
14 septembre 2014
- 14 août 2008 à 17:27
0
Merci
c'est juste que moi le xml j'y touches pas


je me le gardes pour les longues soirées d'hiver 










Bonjour chez vous !
Commenter la réponse de gillardg
Messages postés
539
Date d'inscription
vendredi 6 juin 2003
Dernière intervention
14 juillet 2010
- 14 août 2008 à 19:38
0
Merci
Ah ok je l'avais pas compris comme ça désolé.

Le probleme pour le xml que se soit en vb.net et ou c#.net, c'est que l'au fur et à mesure de l'avancement des frameworks, ils ont rajoutés de plus en plus de function et procedure qui ne se valent pas tous. Et pour faire un truc, tu peux le faire de plusieurs facon différentes c'est ca qui est pénible.
Mais bon pour enregistrer et loader des fichiers de configurations c'est comme pratique. d'ailleur le xml à remplasser le .ini.

Pour revenir sur les fichier de config moi je trouve ca bien, tu créés tes config, graphique, emplacement de boutons, ou autres, tu le stocks dans un dataset et à la fin ou au début tu le charge/enregistre très facilement juste avec writexml("chemin")
Voila, c'est perfectible, mais dans un sens j'aime bien.
@+
youpi :)
Commenter la réponse de youpiyoyo
Messages postés
3288
Date d'inscription
jeudi 3 avril 2008
Dernière intervention
14 septembre 2014
- 14 août 2008 à 20:06
0
Merci
pour la config de ton appli tu as MySettings
qui est très pratique et fait pour cela

Bonjour chez vous !
Commenter la réponse de gillardg
Messages postés
539
Date d'inscription
vendredi 6 juin 2003
Dernière intervention
14 juillet 2010
- 14 août 2008 à 21:05
0
Merci
oui aussi,
mais si tu veux appliquer différents appliquer thèmes à ton appli par exemple, moi j'aime bien utilisé le xml. autre exemple: appli orienté vers un projet de base de données, le transfert de entre Sql server et ton appli se fait assez facilement. Le stockage de champs selectionner, stockage de schema, etc..
Après chacun code comme il aime.
@+
youpi :)
Commenter la réponse de youpiyoyo
Messages postés
3288
Date d'inscription
jeudi 3 avril 2008
Dernière intervention
14 septembre 2014
- 14 août 2008 à 21:09
0
Merci
oui sans doute mais si ton appli utilises des databases tu peux aussi y prévoir une table pour y stocker tes parrametres de themes

Bonjour chez vous !
Commenter la réponse de gillardg

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.