Création d'un graphique à partir d'une datagrid

Contenu du snippet

Voici une petite fonction qui permet de mettre sous forme graphique les données contenues dans une DataGrid. J'ai développé ce code dans le cadre d'un projet où je devais attaquer une base SQL et afficher des données sous forme de tableau (DataGrid). Je devais ensuite les faire apparaître sous forme graphique.

Le graphique obtenu est du type "camembert", mais il suffit de modifier la propriété "objChart.Type" pour obtenir toute sorte de graph. Les paramètres d'entrée de la fonction sont le titre du graph, et la DataTable qui correspong à la propriété DataSource de la DataGrid.

N'hésitez surtout pas à me faire part de vos critiques, même négatives (et oui, c'est comme ça qu'on avance).

Ah oui, au fait, il faut avoir au préalable ajouter le référence Microsoft Office XP Web Components.

Source / Exemple :


Imports System.IO  'pour le FilInfo
Imports OWC10      'pour les objets grahiques

Private Sub CreerGraph(ByVal strTitre As String, ByVal dTable As System.Data.DataTable)

        Dim objCSpace As New ChartSpaceClass
        Dim objChart As ChChart
        Dim objSeries As OWC10.ChSeries
        Dim strCategory As String
        Dim strValue As String
        Dim strFileName As String
        Dim intI, intJ As Integer
        Dim file_gif As FileInfo

        'S'il n'y a pas d'enregistrements da,s le DataGrid, inutile de créer le graph (on aurait un graph tout blanc : aucun intérêt)
        If dTable.Rows.Count <> 0 Then

            PictureBox1.Visible = True
            objChart = objCSpace.Charts.Add(0)
            'Type du graph (ici camembert 3D)
            objChart.Type = ChartChartTypeEnum.chChartTypePie3D

            'Titre et légendes
            objChart.HasTitle = True
            objChart.Title.Caption = strTitre
            objChart.HasLegend = True
            objChart.Legend.Border.DashStyle = OWC10.ChartLineDashStyleEnum.chLineSolid
            objChart.Legend.Position = OWC10.ChartLegendPositionEnum.chLegendPositionRight
            'Les données du graph correspondent au contenu de la Datatable qui est affiché dans un DataGrid
            For Each dRow As DataRow In dTable.Rows
                strCategory &= DataGrid1.Item(intI, 0) & ","
                strValue &= DataGrid1.Item(intI, 1).ToString.Replace(",", ".") & ","
                intI += 1
            Next
            objSeries = objChart.SeriesCollection.Add(0)
            'Mise en forme des datas dans le graph
            objSeries.SetData(ChartDimensionsEnum.chDimCategories, ChartSpecialDataSourcesEnum.chDataLiteral, strCategory)
            objSeries.SetData(ChartDimensionsEnum.chDimValues, ChartSpecialDataSourcesEnum.chDataLiteral, strValue)

            strFileName = "C:\graph.gif"
            file_gif = New FileInfo(strFileName)
            'Si le fichier existe déjà, ça signifie qu'on a déjà associé le graph à la PictureBox
            'Cette partie permet d'actualiser le graph avec les datas (si elles ont changé)
            If file_gif.Exists Then
                'On libère les ressources liées au fichier
                PictureBox1.Image.Dispose()
                file_gif.Delete()
            End If
            'Export du graph au format gif pour l'assigner à la propriété Image de la PictureBox
            objCSpace.ExportPicture(strFileName, , 400, 300)
            PictureBox1.Visible = True
            PictureBox1.Image = Image.FromFile(strFileName)
        Else
            PictureBox1.Visible = False
        End If
    End Sub

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.