IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo
Sommaire > A supprimer
        Comment transférer des données volumineuses sous Excel rapidement ?
        Que signifie l'attribut [STAThread] au dessus de la fonction Main ?



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


Valid XHTML 1.0 TransitionalValid CSS!

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