IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[VB.NET] [EXCEL] Ecrire le contenu d'un Dataset ds Excel


Sujet :

Windows Forms

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 23
    Points : 8
    Points
    8
    Par défaut [VB.NET] [EXCEL] Ecrire le contenu d'un Dataset ds Excel
    Bonjour à tous,
    Je suis en train d'essayer d'écrire le contenu d'un Dataset dans un fichier EXCEL. J'ai vu quelques exemples mais cela ne fonctionne pas.

    Actuellement mon code est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Dim dvSU2PC As New DataView
    Dim dvPC2SU As New DataView
    Dim i As Integer
    Dim MyExcel As New Excel.Application
    MyExcel.Visible = False
    Dim MyWorkBook As Excel.Workbook = MyExcel.Workbooks.Add("c:\bla.xls")
    Dim MyWorkSheet As Excel.Worksheet = MyWorkBook.ActiveSheet
     
    'init Dataviews & bindings
    dvSU2PC = myDataset.DefaultViewManager.CreateDataView(myDataset.Tables(0))
    dvPC2SU = myDataset.DefaultViewManager.CreateDataView(myDataset.Tables(1))
     
    MyExcel = New Excel.Application
    MyWorkBook = MyExcel.Workbooks.Open("c:\Trace.xls")
    MyWorkSheet = MyWorkBook.ActiveSheet
     
    ' Export Datas
    MyWorkSheet.Cells(1, 1) = "SU to PC"
    MyWorkSheet.Cells(1, 2) = "PC to SU"
    MyWorkSheet.Cells(1, 1).Font.Bold = True
    MyWorkSheet.Cells(1, 2).Font.Bold = True
     
    Dim dr As DataRowView
     
    i = 2
    For Each dr In dvSU2PC
        MyWorkSheet.Cells(i, 1) = dr.Item("SU2PC")
        i = i + 1
    Next
     
    i = 2
    For Each dr In dvPC2SU
        MyWorkSheet.Cells(i, 2) = dr.Item("PC2SU")
        i = i + 1
    Next
     
    'Autofit the cells
    MyWorkSheet.Cells(1, 1).CurrentRegion.EntireColumn.AutoFit()
    MyWorkBook.Save()
    MyWorkBook.Close()
    J'ai biensur rajouté dans les références Microsoft Excel 11.0 Object Library.

    J'obtiens l'erreur :
    An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in Relevés financiers.exe
    Additional information: Old format or invalid type library.
    Voila j'espère vous avoir donné toutes les infos. Si quelqu'un a une solution plus efficace qu'il n'hésite pas. J'ai essayé aussi la solution du tutoriel http://dotnet.developpez.com/cours/office/.

    Merci de votre aide...

  2. #2
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 50
    Points : 58
    Points
    58
    Par défaut Salut
    Personnellement, je ferais un fichier CSV. C'est un fichier qui sépare les informations par un point-virgule.

    Tu peux facilement l'ouvrir dans excel.

    ok a+

  3. #3
    Expert éminent
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Points : 9 634
    Points
    9 634
    Par défaut
    Tu as bien le dernier Office? Pcq ta référence pointe vers cela.

    D'ailleurs il est souhaitable de mettre les référence vers Office versions antérieures pour une meilleure compatibilité.

  4. #4
    Futur Membre du Club
    Inscrit en
    Février 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 23
    Points : 8
    Points
    8
    Par défaut
    Dans mon VB.Net j'ai uniquement les références Excel 11 et 5.
    Dois-je plutot utiliser le 5 selon vous ? Le code n'est t il pas différent ?


    Sinon pour le CSV, ce n'est pas possible car mon programme doit créer des fichiers XLS et ouvrir un CSV puis ensuite enregistrer en XLS me ferait perdre du temps.

  5. #5
    Expert éminent
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Points : 9 634
    Points
    9 634
    Par défaut
    Tu auras plus de chances que ce soit supporté par tous avec une ancienne version

  6. #6
    Futur Membre du Club
    Inscrit en
    Février 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 23
    Points : 8
    Points
    8
    Par défaut
    Je viens d'essayer et j'ai une erreur sur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyWorkSheet.Cells(1, 1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Expression is a value and therefore cannot be the target of an assignment.

  7. #7
    Expert éminent
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Points : 9 634
    Points
    9 634
    Par défaut
    Ca par contre c'est bizarre.

    Hier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheet.Cells(1,1) = "test"
    fonctionnait

  8. #8
    Futur Membre du Club
    Inscrit en
    Février 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 23
    Points : 8
    Points
    8
    Par défaut
    J'ai rajouté la propriété VALUE et ca passe maintenant par contre

    Dim MyWorkBook As Excel.Workbook = MyExcel.Workbooks.Add("c:\bla.xls")
    Ca ne passe pas .

  9. #9
    Expert éminent
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Points : 9 634
    Points
    9 634
    Par défaut
    Tu ne l'ajoutes pas si il existe, tu l'ouvres, donc Open.

  10. #10
    Futur Membre du Club
    Inscrit en
    Février 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 23
    Points : 8
    Points
    8
    Par défaut
    Je viens de voir que en fait il n'existe aucune propriété de Workbook donc ni open ni add....

  11. #11
    Expert éminent
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Points : 9 634
    Points
    9 634
    Par défaut
    Voici un code en C#, j'espere que ca t'aidera :s

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    			object oMissing= System.Reflection.Missing.Value;
     
    			Excel.Application appXls = new Excel.ApplicationClass();
    			appXls.Visible = false;
    			StatusBarAccess.Executing = "Exportation de la liste des devis vers Excel en cours...";
    			//Excel._Workbook Classeur = appXls.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);
    			string filename = @"c:\VlvDevis\Export.xlt";
    			Excel._Workbook Classeur = appXls.Workbooks.Open(filename, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing);
    			Excel._Worksheet Feuille = (Excel._Worksheet) Classeur.ActiveSheet;
     
    			oConn=new System.Data.OleDb.OleDbConnection();
    			oConn.ConnectionString=MainFrame.strConn;
    			oCmd=new System.Data.OleDb.OleDbCommand();
    			oCmd.Connection=oConn;
    			oCmd.CommandText=strCmd;
    			oConn.Open();
    			OleDbDataReader dr = oCmd.ExecuteReader();
    			int nLine=5;
    			int DernierMontant = -999999;
    			string DerniereAffaire = "DeniereAffaire";
    			while (dr.Read())
    			{
    				if (Convert.ToInt32(dr["Montant"]) >= DernierMontant * 0.9 && Convert.ToInt32(dr["Montant"]) <= DernierMontant * 1.1 && dr["Affaire"].ToString() == DerniereAffaire)
    				{
    					Feuille.Cells[nLine-1, 4] = "[...]";
    				}
    				else
    				{
    ...

  12. #12
    Futur Membre du Club
    Inscrit en
    Février 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 23
    Points : 8
    Points
    8
    Par défaut
    Merci pour ton aide, je viens de réessayer avec la library 11 mais j'ai un problème au moment de load le template.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur : Invalid type library

  13. #13
    Futur Membre du Club
    Inscrit en
    Février 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 23
    Points : 8
    Points
    8
    Par défaut
    Bon ba j'ai résolu mon problème tout seul.
    En fait j'avais un problème de compatibilité entre mon XP et mon Excel en effet je suis tomber sur un bug de paramètres nationaux

    http://support.microsoft.com/kb/320369#kb3

    Voila avec une simple ligne de code ca marche mieux

    MERCI A .... MOI

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Excel - Écrire une formule dans une cellule
    Par Fanta1090 dans le forum VB.NET
    Réponses: 8
    Dernier message: 08/05/2020, 19h49
  2. [vb.net] Copie / colle d'une ligne excel sans le contenu
    Par narutobaka dans le forum VB.NET
    Réponses: 1
    Dernier message: 02/10/2009, 12h22
  3. VB.NET Pilotage Excel : boucle récup contenu plage
    Par bib34690 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 14/03/2006, 18h52
  4. [VB.NET] Statistique sur le contenu d'un DATASET
    Par stephane93fr dans le forum Windows Forms
    Réponses: 2
    Dernier message: 17/01/2005, 13h51
  5. [LG]Ecrire le contenu d'un fichier dans un autre
    Par lucke dans le forum Langage
    Réponses: 10
    Dernier message: 26/04/2003, 20h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo