2009-09-15 8 views
0

S'il vous plaît quelqu'un peut m'aider avec cela car il me rend fou!Excel C# Com Chart série multiple Problème

Je crée un graphique Excel en utilisant C# et l'interface COM de manière pragmatique. J'ai créé le graphique à l'aide de l'assistant de graphique.

Je veux ensuite ajouter plus de séries à ce tableau. Je peux ajouter la série mais les données supplémentaires sont sur de nouvelles colonnes et elles ne sont pas créées automatiquement.

Est-ce que je vais dans le mauvais sens?

Ajouter Graphique:

public void MakeExcelChart(string startRange, string endRange, string chartTitle, string seriesName) 
    { 
     ExcelChart = (Excel.Chart)ExcelWBook.Charts.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value); 
     ExcelApp.Visible = true; 
     ExcelChart.HasTitle = true; 
     ExcelChart.ChartTitle.Text = chartTitle; 

     ExcelRange = ExcelWSheet.get_Range(startRange, endRange); 

     ExcelChart.ChartWizard(ExcelRange, Excel.XlChartType.xlColumnClustered, Missing.Value, Excel.XlRowCol.xlColumns, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); 

     ExcelChart.ApplyDataLabels(Microsoft.Office.Interop.Excel.XlDataLabelsType.xlDataLabelsShowBubbleSizes, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); 

     ExcelChart.ChartArea.Fill.OneColorGradient(Microsoft.Office.Core.MsoGradientStyle.msoGradientHorizontal, 1, 1); 

     GetSeriesCollection(); 

     ExcelSeries = ExcelSeriesCollection.Item(1); 
     ExcelSeries.Name = seriesName; 
    } 

Et pour ajouter des séries:

public void AddSeries(string col1, string col2, string startRange, string endRange, string seriesName) 
    { 
     ExcelSeries = ExcelSeriesCollection.NewSeries(); 

     ExcelSeries.HasDataLabels = true; 

     ExcelRange = ExcelWSheet.get_Range(col1+startRange, col1+endRange); 

     ExcelSeries.XValues = ExcelRange; 

     ExcelRange = ExcelWSheet.get_Range(col2+startRange, col2+endRange); 

     ExcelSeries.Values = ExcelRange; 

     ExcelChart.HasLegend = true; 

     ExcelSeries.Name = seriesName; 

     } 
+0

J'ai aussi déjà fait une recherche et rien que je n'ai pu trouver traité avec plusieurs séries de données sur une carte! –

+0

Bump .. S'IL VOUS PLAÎT? –

+0

pouvez-vous s'il vous plaît nous montrer comment vous appelez vos fonctions. en particulier, quelles valeurs pour les variables startRange, endRange, col1 et col2. – Nat

Répondre

1

essayez quelque chose comme ceci. Cela fonctionne plutôt bien pour moi.

Excel.ChartObjects xlChart = (Excel.ChartObjects)xlWorkSheet.ChartObjects(Type.Missing); 
Excel.ChartObject myChart = (Excel.ChartObject)xlChart.Add(1050, 865, 690, 265); 
Excel.Chart chartPage = myChart.Chart; 
chartPage.ChartType = Excel.XlChartType.xlColumnClustered; 
chartPage.HasTitle = true; 
chartPage.ChartTitle.Text = "title"; 
chartPage.HasLegend = true; 

Excel.SeriesCollection oSeriesCollection = (Excel.SeriesCollection)myChart.Chart.SeriesCollection(misValue); 
Excel.Series series1 = oSeriesCollection.NewSeries(); 
Excel.Series series2 = oSeriesCollection.NewSeries(); 
Excel.Series series3 = oSeriesCollection.NewSeries(); 

Excel.Range series1_range = xlWorkSheet.get_Range("start_range1","end_range1"); 
Excel.Range series2_range = xlWorkSheet.get_Range("start_range2","end_range2"); 
Excel.Range series3_range = xlWorkSheet.get_Range("start_range3","end_range3"); 

series1.Values = series1_range; 
series2.Values = series2_range; 
series3.Values = series3_range; 

vous pouvez modifier les paramètres de chaque série individuellement par exemple:

series1.Name = "some name"; 

et ainsi de suite.

+0

comment le créer dynamiquement en utilisant pour boucle? –

Questions connexes