C# Excel 图表改变颜色

发布于 2024-11-03 17:35:42 字数 1551 浏览 1 评论 0原文

我正在尝试将图表系列的线条颜色更改为“无”。我尝试设置颜色和标记属性,但程序出错。

我的代码:

 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);

需要代码将系列的颜色设置为“无”。任何建议都会有用。

I am trying to change the line color of the chart series to None. I tried setting the color and the marker property but the program errors out.

My code:

 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);

Need code to set the color of the series to None.Any suggestions would be useful.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

请止步禁区 2024-11-10 17:35:42

此代码可以根据每个切片的图例标签设置电子表格中所有饼图的切片颜色:

Sub 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

End Sub

此代码可以设置条形图颜色:

Sub 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

也许可以帮助您!

This code can set the colours of the slices of all the pie charts in my spreadsheet based on each slice's legend's label:

Sub 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

End Sub

And this code can set barchart colours:

Sub 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

Maybe could help you!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文