Enregistrer un Datagrid sous forme de fichier XML

Résolu
KIPRE74 Messages postés 120 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 21 novembre 2013 - 14 août 2008 à 12:51
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre 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

9 réponses

gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
14 août 2008 à 16:34
* 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 !
3
youpiyoyo Messages postés 539 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 14 juillet 2010
14 août 2008 à 16:46
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 :)
3
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
14 août 2008 à 14:55
en xml , non
en excel oui enfin si tu veux hein moi je ne veux aps te forcer !

Bonjour chez vous !
0
KIPRE74 Messages postés 120 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 21 novembre 2013
14 août 2008 à 15:53
pas de problème, à défaut de chien on peut amener le chat à la chasse !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
14 août 2008 à 17:27
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 !
0
youpiyoyo Messages postés 539 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 14 juillet 2010
14 août 2008 à 19:38
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 :)
0
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
14 août 2008 à 20:06
pour la config de ton appli tu as MySettings
qui est très pratique et fait pour cela

Bonjour chez vous !
0
youpiyoyo Messages postés 539 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 14 juillet 2010
14 août 2008 à 21:05
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 :)
0
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
14 août 2008 à 21:09
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 !
0
Rejoignez-nous