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

C# Discussion :

Créer un tableau croisé dynamique avec C#


Sujet :

C#

  1. #1
    Membre expert
    Profil pro
    Dév
    Inscrit en
    Juin 2007
    Messages
    1 161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Dév

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 161
    Points : 3 693
    Points
    3 693
    Par défaut Créer un tableau croisé dynamique avec C#
    Bonjour,

    J'ai 2 ArrayList contenant les abscisses et et les ordonnées:

    ArrayList x --> "abscisse|nomDuPoint"
    ArrayList y --> "ordonnées|nomDuPoint"

    Les coordonnées des données n'étant pas que des nombres compris entre [-10; 10], je dois faire un tableau croisé dynamique dans Excel. Étant donné que l'utilisateur ne doit pas toucher à la feuille Excel, je voudrais générer moi-même ce tableau à partir de C#.

    En recherchant sur le net, je vois donc le type Excel.PivotTable de la référence Interop.Excel. Cependant, l'exemple sur MSDN ne semble pas marcher malgré mes modifs :


    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    public void DisplayPivotTableInformation()
            {
     
                Excel.Application app = new Excel.Application();
                app.Visible = true;
                Excel.Workbook wk;
                wk = app.Workbooks.Add(Type.Missing);
                Excel.Worksheet ws = (Excel.Worksheet)wk.Sheets[1];//Select sheet 7x3 and 7x4
     
                // Specify values for the PivotTable.
                ws.get_Range("A1", Type.Missing).Value2 = "Date";
                ws.get_Range("A2", Type.Missing).Value2 = "March 1";
                ws.get_Range("A3", Type.Missing).Value2 = "March 8";
                ws.get_Range("A4", Type.Missing).Value2 = "March 15";
     
                ws.get_Range("B1", Type.Missing).Value2 = "Customer";
                ws.get_Range("B2", Type.Missing).Value2 = "Smith";
                ws.get_Range("B3", Type.Missing).Value2 = "Jones";
                ws.get_Range("B4", Type.Missing).Value2 = "James";
     
                ws.get_Range("C1", Type.Missing).Value2 = "Sales";
                ws.get_Range("C2", Type.Missing).Value2 = "23";
                ws.get_Range("C3", Type.Missing).Value2 = "17";
                ws.get_Range("C4", Type.Missing).Value2 = "39";
     
                // Create and populate the PivotTable.
                Excel.PivotTable table1 = new Excel.PivotTable();
     
               table1.PivotTableWizard(
                    Excel.XlPivotTableSourceType.xlDatabase,
                    ws.get_Range("A1", "C4"),
                    ws.get_Range("A10", Type.Missing), "Sales Table", false,
                    false, true, false, Type.Missing, Type.Missing, false, false,
                    Excel.XlOrder.xlDownThenOver, Type.Missing, Type.Missing, Type.Missing);
     
                Excel.PivotField customerField =
                    (Excel.PivotField)table1.PivotFields("Customer");
                customerField.Orientation =
                    Excel.XlPivotFieldOrientation.xlRowField;
                customerField.Position = 1;
     
                Excel.PivotField dateField =
                    (Excel.PivotField)table1.PivotFields("Date");
                dateField.Orientation =
                    Excel.XlPivotFieldOrientation.xlColumnField;
                dateField.Position = 1;
     
                table1.AddDataField(table1.PivotFields("Sales"),
                    "Sales Summary", Excel.XlConsolidationFunction.xlSum);
     
                // Create a NamedRange in the PivotTable and display the 
                // location.
                Microsoft.Office.Tools.Excel.NamedRange namedRange1 =
                    this.Controls.AddNamedRange(
                    this.Range["B11", missing], "namedRange1");
                namedRange1.Select();
     
                MessageBox.Show("The NamedRange is in the PivotTable report '" +
                    namedRange1.PivotTable.Name + "' at the location '" +
                    namedRange1.LocationInTable.ToString() + "'.");
     
                MessageBox.Show("The NamedRange has a PivotCell type of: " +
                     namedRange1.PivotCell.PivotCellType.ToString());
     
                MessageBox.Show("The NamedRange is in the PivotTable field: " +
                     namedRange1.PivotField.Name);
     
                MessageBox.Show("The NamedRange is in the PivotTable item: " +
                    namedRange1.PivotItem.Name);
     
                namedRange1.Group(true, missing, missing, missing);
            }
    Déjà, tools ne semble pas être reconnue comme référence.

  2. #2
    Membre éprouvé Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Points : 1 188
    Points
    1 188
    Par défaut
    bonjour,
    tu travailles avec le framework .Net 1.1?

  3. #3
    Membre expert
    Profil pro
    Dév
    Inscrit en
    Juin 2007
    Messages
    1 161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Dév

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 161
    Points : 3 693
    Points
    3 693
    Par défaut
    Bonjour, je te remercie j'ai résolu à peu près correctement si ce n'est que je n'arrive à mettre le nombre d'occurrence au lieu de faire la somme même en mettant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Excel.XlConsolidationFunction.xlCount
    Sinon pour ta question je suis au framework 2.0 .

    Amicalement.

Discussions similaires

  1. Réponses: 13
    Dernier message: 08/10/2017, 21h28
  2. tableau croisé dynamique avec plage de sélection variable
    Par nat44 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 10/07/2008, 13h29
  3. Tableau croisé dynamique avec critère
    Par gege87270 dans le forum Macros et VBA Excel
    Réponses: 35
    Dernier message: 12/06/2008, 14h22

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