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

KIPRE74 121 Messages postés jeudi 15 mai 2008Date d'inscription 21 novembre 2013 Dernière intervention - 14 août 2008 à 12:51 - Dernière réponse : gillardg 3288 Messages postés jeudi 3 avril 2008Date d'inscription 14 septembre 2014 Dernière intervention
- 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 

9 réponses

Répondre au sujet
gillardg 3288 Messages postés jeudi 3 avril 2008Date d'inscription 14 septembre 2014 Dernière intervention - 14 août 2008 à 16:34
+3
Utile
* 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 !
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de gillardg
youpiyoyo 539 Messages postés vendredi 6 juin 2003Date d'inscription 14 juillet 2010 Dernière intervention - 14 août 2008 à 16:46
+3
Utile
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 :)
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de youpiyoyo
gillardg 3288 Messages postés jeudi 3 avril 2008Date d'inscription 14 septembre 2014 Dernière intervention - 14 août 2008 à 14:55
0
Utile
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
KIPRE74 121 Messages postés jeudi 15 mai 2008Date d'inscription 21 novembre 2013 Dernière intervention - 14 août 2008 à 15:53
0
Utile
pas de problème, à défaut de chien on peut amener le chat à la chasse !
Commenter la réponse de KIPRE74
gillardg 3288 Messages postés jeudi 3 avril 2008Date d'inscription 14 septembre 2014 Dernière intervention - 14 août 2008 à 17:27
0
Utile
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
youpiyoyo 539 Messages postés vendredi 6 juin 2003Date d'inscription 14 juillet 2010 Dernière intervention - 14 août 2008 à 19:38
0
Utile
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
gillardg 3288 Messages postés jeudi 3 avril 2008Date d'inscription 14 septembre 2014 Dernière intervention - 14 août 2008 à 20:06
0
Utile
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
youpiyoyo 539 Messages postés vendredi 6 juin 2003Date d'inscription 14 juillet 2010 Dernière intervention - 14 août 2008 à 21:05
0
Utile
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
gillardg 3288 Messages postés jeudi 3 avril 2008Date d'inscription 14 septembre 2014 Dernière intervention - 14 août 2008 à 21:09
0
Utile
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.