我想刪除Excel圖表中某些(但不是全部)系列的圖例條目。從我的經驗看,似乎SeriesCollection.Item(index)
和LegendEntries.Item(index)
是不相關的。鑑於一系列n
我該如何刪除該系列的圖例?如何使用C#刪除Excel圖表圖例條目?
我將Office Interop 2010與Visual Studio 2010結合使用。通過選擇圖例條目然後右鍵單擊並選擇「刪除」,可以通過GUI輕鬆完成。
我想刪除Excel圖表中某些(但不是全部)系列的圖例條目。從我的經驗看,似乎SeriesCollection.Item(index)
和LegendEntries.Item(index)
是不相關的。鑑於一系列n
我該如何刪除該系列的圖例?如何使用C#刪除Excel圖表圖例條目?
我將Office Interop 2010與Visual Studio 2010結合使用。通過選擇圖例條目然後右鍵單擊並選擇「刪除」,可以通過GUI輕鬆完成。
要刪除圖例條目,您必須知道要刪除的圖例的索引。不幸的是,似乎沒有通過interop api提供的關係,它揭示了圖例和系列之間的關係。有一個hokey解決方法,但是。要刪除特定系列的圖例,我的方法是在添加系列後立即刪除圖例。這是傳說索引唯一已知的時間。
// .
// . code to add series
// .
// remove the legend entry for the newly added series
chart.Legend.LegendEntries(chart.Legend.LegendEntries().Count).Delete();
我才知道,原來問題是有關Office 2010互操作,但是這似乎是動態顯示和圖表中隱藏系列也有很好的參考點,所以我會添加以下頂部的情況下,它可以幫助其他。
如果你想顯示/隱藏在chartobject了一系列關於在Office 2013工作表(至少在VBA;關於互操作不知道),你可以做到以下幾點:
Worksheets("MySheetName").ChartObjects("MyChartName").Chart.FullSeriesCollection("MyLedendSeriesName").IsFiltered = false
這個隱藏系列而不刪除它。將其設置爲true以再次顯示系列。
我需要從圖表中刪除最後兩個圖例條目,因爲它們是添加了假系列以創建十字線效果。一個系列做了垂直線,另一個系列做了水平線。圖例輸入被刪除後,系列仍然在圖表上,這正是我想要的。我用下面的代碼:
Microsoft.Office.Interop.Excel.ChartObject chartObj = null;
Microsoft.Office.Interop.Excel.Chart chart = null;
Microsoft.Office.Interop.Excel.Legend legend = null;
Microsoft.Office.Interop.Excel.LegendEntries legendEntries = null;
Microsoft.Office.Interop.Excel.LegendEntry legendItem;
int legendEntryCount = 0;
chartObj = (Microsoft.Office.Interop.Excel.ChartObject) xlws.ChartObjects("Chart 1");
chart = chartObj.Chart;
legend = chart.Legend;
legendEntries = (Microsoft.Office.Interop.Excel.LegendEntries) chart.Legend.LegendEntries();
legendEntryCount = legendEntries.Count;
if (legendEntryCount > 2)
{
legendItem = (Microsoft.Office.Interop.Excel.LegendEntry) legend.LegendEntries(legendEntryCount);
legendItem.Delete();
legendItem = (Microsoft.Office.Interop.Excel.LegendEntry) legend.LegendEntries(legendEntryCount - 1);
legendItem.Delete();
}