2011-04-27 102 views
0

我正在嘗試將圖表系列的線條顏色更改爲無。我試圖設置顏色和標記屬性,但程序錯誤。C#Excel圖表更改顏色

我的代碼:

Excel.ChartObjects _ChartObjects = (Excel.ChartObjects)(oSheet1.ChartObjects(Missing.Value)); 
      Excel.ChartObject _ChartObject = _ChartObjects.Add(170, 0, 400, 300); 
      Excel.Chart _Chart = _ChartObject.Chart; 
      Excel.Range oRng1; 
      oRng1 = oSheet1.get_Range("A1","E55");    
      _Chart.SetSourceData(oRng1, Excel.XlRowCol.xlColumns); 
      _Chart.ChartType = Microsoft.Office.Interop.Excel.XlChartType.xlLineMarkers; 
      oWB.ShowPivotChartActiveFields = true; 
      //_Chart.ChartTitle.Font.Size = 12; 
      _Chart.SetElement(Microsoft.Office.Core.MsoChartElementType.msoElementDataTableWithLegendKeys); 
      _Chart.DataTable.Font.Size = 6; 
      oWB.ShowPivotChartActiveFields = false; 
      _Chart.SetElement(Microsoft.Office.Core.MsoChartElementType.msoElementPrimaryValueAxisTitleRotated); 
      _Chart.SetElement(Microsoft.Office.Core.MsoChartElementType.msoElementLegendNone); 
      //_Chart.Legend.Delete(); 
      _Chart.SetElement(Microsoft.Office.Core.MsoChartElementType.msoElementPrimaryValueAxisTitleNone); 
      _Chart.Location(Excel.XlChartLocation.xlLocationAsNewSheet, "Tax Weekly Term-Chart"); 
      Excel.SeriesCollection seriesCollection = (Excel.SeriesCollection)_Chart.SeriesCollection(Type.Missing); 

      Excel.Series series = (Excel.Series)seriesCollection.Item(4); 

需要編寫代碼來設置該系列None.Any建議的顏色將是有益的。

回答

0

該代碼可以設置在我的電子表格中的所有餅圖根據每個切片的傳奇標籤上的切片的顏色:`子SetPieChartColours()

' Iterates through all pie charts in the dashboard and apply colours to the appropriate legends 

' Colour indices: 
' Passed (Green)    10 
' Not Completed (Yellow)  19 
' No run (Blue)    37 
' Failed (Maroon)   18 
' Failed Issue (Pink)  24 
' Failed Defect (Red)  3 

Dim savePtLabel As String 
Dim ThisPt As String 

Dim NumPoints As Integer 
Dim x As Integer 

Dim pie As ChartObject 
For Each pie In ActiveSheet.ChartObjects 

    ' Check that the current chart object is a pie chart 
    If pie.Chart.ChartType = xlPie Then 

     NumPoints = pie.Chart.SeriesCollection(1).Points.Count 
     For x = 1 To NumPoints 

      ' Save the label currently attached to the current slice 
      If pie.Chart.SeriesCollection(1).Points(x).HasDataLabel = True Then 
       savePtLabel = pie.Chart.SeriesCollection(1).Points(x).DataLabel.Text 
      Else 
       savePtLabel = "" 
      End If 

      ' Assign a new data label of just the point name 
      pie.Chart.SeriesCollection(1).Points(x).ApplyDataLabels Type:= _ 
       xlDataLabelsShowLabel, AutoText:=True 
      ThisPt = pie.Chart.SeriesCollection(1).Points(x).DataLabel.Text 

      ' Based on the label of this slice, set the color 
      Select Case ThisPt 
       Case "Failed-Defect" 
        pie.Chart.SeriesCollection(1).Points(x).Interior.ColorIndex = 3 
       Case "Failed-Issue" 
        pie.Chart.SeriesCollection(1).Points(x).Interior.ColorIndex = 24 
       Case "Failed" 
        pie.Chart.SeriesCollection(1).Points(x).Interior.ColorIndex = 18 
       Case "No Run" 
        pie.Chart.SeriesCollection(1).Points(x).Interior.ColorIndex = 37 
       Case "Not Completed" 
        pie.Chart.SeriesCollection(1).Points(x).Interior.ColorIndex = 18 
       Case "Passed" 
        pie.Chart.SeriesCollection(1).Points(x).Interior.ColorIndex = 10 
       Case Else 
        ' Aroo! The label of the current slice doesn't match any expected labels 
        pie.Chart.SeriesCollection(1).Points(x).Interior.ColorIndex = 1 
      End Select 

      ' Return the label to it's original state 
      pie.Chart.SeriesCollection(1).Points(x).ApplyDataLabels Type:=xlDataLabelsShowNone, AutoText:=True 

     Next x 
    End If 
Next 

末次 And this code can set barchart colours:子SetBarChartColours()

Dim savePtLabel As String 
Dim ThisPt As String 

Dim NumPoints As Integer 
Dim x As Integer 

Dim bar As ChartObject 

For Each bar In ActiveSheet.ChartObjects 
    If bar.Chart.Name = "Dashboard Chart 5" Then 
     NumPoints = bar.Chart.SeriesCollection.Count 
     For x = 1 To NumPoints 
      MsgBox bar.Chart.Legend.LegendEntries(x).LegendKey.Interior.ColorIndex 


     Next x 
    End If 
Next 

End Sub` 也許可以幫到你!

+0

謝謝賈斯汀。有效。 – user728148 2011-05-02 15:05:33