Accueil
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi Eclipse MS-Office SQL & SGBD Oracle  4D  Business Intelligence
logo



Comment transférer des données volumineuses sous Excel rapidement ?
auteur : HULK
warning Code complètement foireux (traduit automatiquement de VB ?)
Ce code permet un export rapide de données vers une feuille excel grâce à une requête ou une procédure stockée. Il devient intéressant si les données à exporter sont volumineuses (plusieurs milliers de lignes). L'ajout de la référence "Microsoft Excel 11.0 Object Library" est nécessaire.

          
					using Microsoft.Office.Interop;

					// dans un évènement click de bouton par exemple
					Excel.Application xlApp;

					try
					{
					xlApp = GetObject(, "excel.application")
					}
					catch(Exception )
					{
					xlApp = new Excel.Application();
					}
					finally
					{
					xlApp.Visible = false;
					}

					//ajout d'une page et sélection
					Excel.Worksheet xsTransfert = xlApp.Workbooks.Add.ActiveSheet;

					try
					{
					// ici on crée la chaine de connexion
					// (on se connecte à SQL Server dans notre exemple)
					xsTransfert.QueryTables.Add(Connection:= _
					"ODBC;DRIVER=SQL Server;SERVER= Nom_Server;Integrated
					Security=SSPI;" & _
					"APP=Microsoft® Query;DATABASE= Nom_Base;Trusted_Connection=Yes", _
					Destination:=xsTransfert.Range("A1"))
					.CommandText = "Nom_Procedure_stockée" ' ou requete SELECT
					.Name = "nom_feuille_excel"
					.FieldNames = True
					.RowNumbers = True
					.FillAdjacentFormulas = False
					.PreserveFormatting = True
					.RefreshOnFileOpen = False
					.BackgroundQuery = True
					.RefreshStyle = Excel.XlCellInsertionMode.xlOverwriteCells
					.SavePassword = False
					.SaveData = False
					.AdjustColumnWidth = True
					.RefreshPeriod = 0
					.PreserveColumnInfo = True
					.Refresh(BackgroundQuery:=False)

					// affichage
					xlApp.Visible = true;
					catch(Exception ex)
					{
					MessageBox.Show(ex.Message);
					}

        

Que signifie l'attribut [STAThread] au dessus de la fonction Main ?
auteur : cardi
warning Faux, ça n'a rien à voir... C'est lié à l'interop COM, cf. MSDN
L'attribut [STAThread] (STA pour Single Threaded Appartment) signifie que seul le thread de la fenêtre pourra accéder aux composants de la fenêtre.

Cependant, si un second thread venait à créer un composant durant l'exécution de l'application, c'est ce dernier qui en aurait le contrôle !



Consultez les autres F.A.Q's


Les sources présentés sur cette page sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©2010  Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com