[.net] export excel xls rapide par msquery (proc stockées tables vues requetes ...)

Contenu du snippet

régulièrement y a des codes qui tombent qui montrent comment remplir un tableau excel case par case, mais des qu'il y a quelques milliers de lignes c'est lent.

Le code ouvre l'aplication excel en cours ou une nouvelle.
Il appelle la proc sur le serveur
Il renvoie les milliers de lignes et affiche le tout en moins d'une seconde.
Le code est totalement accesible par des débutants.

Enjoy It
[b]VBenouille./b
[i]ps: je vous mets juste le code de la fonction, car je le tire directement de mon projet pro et je l'adapte a peine (je change juste les noms des variables) /i

Source / Exemple :


Private Sub ExportExcel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuExportXls.Click
    'wait'n see
        Me.Cursor = System.Windows.Forms.Cursors.WaitCursor

    'ouverture d'excel
    Dim xlApp As Excel.Application

        Try
            xlApp = GetObject(, "excel.application")
        Catch
            xlApp = New Excel.Application
        Finally
            xlApp.Visible = False
        End Try

    'ajout d'une page et sélection
    Dim xsSoldesComptes5 As Excel.Worksheet = xlApp.Workbooks.Add.ActiveSheet

    'requete serveur
        With xsSoldesComptes5.QueryTables.Add(Connection:= _
            "ODBC;DRIVER=SQL Server;SERVER=MonServeur;Integrated Security=SSPI;" & _
            "APP=Microsoft® Query;DATABASE=MaBase;Trusted_Connection=Yes" _
            , Destination:=xsSoldesComptes5.Range("A1"))

            .CommandText = "MaProcStockée"     ' ou la requete select * from machin si vous n'avez pas de proc

            .Name = "SoldesComptes5"
            .FieldNames = True
            .RowNumbers = False
            .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)
        End With

    ' affichage
        Me.Cursor = System.Windows.Forms.Cursors.Default
        xlApp.Visible = True
    End Sub

Conclusion :


demande d'ajouter la librairie Microsoft excel 9.
la fonction réagit à un clic sur un menu qui s'appelle mnuExportExcel, il faut adapter la déclaration à votre projet de test.
les droits d'acces à la base sont gérés par windows (sspi), il faut donc que l'utilistateur aie les droits de faire la requête ou d'éxécuter la proc stockée comme moi.

le code est en prod chez moi.
dites moi si vous voyez des défauts ou si vous avez des remarques.

A voir également

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.