如何从幻灯片中获取图表类型和名称?

How to get chart type and name of that from a slide?

我必须从图表中找到以下信息。 chartType,ChartName在里面

从上图中我想找到以下信息

  1. 类型:列
  2. 名称:聚集列。

使用或不使用互操作直到现在,通过使用互操作,我可以使用 属性 ChartType 获取图表类型(下面是代码)。但它给了我 xlColumnClustered 我开始知道那是什么但我想要确切的名称和类型。

if (shape.HasChart == MsoTriState.msoTrue)
{
    var val1 = shape.Chart;
    string category = val1.ChartType.ToString();
    Console.WriteLine("Smartart : {0} \tCategory : {1}\t Name : {2}", (i++).ToString(), category, 1);
}

您不会从图表类型中获得比 xlColumnClustered 更具体的值。这是所有图表类型的列表:

https://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.xlcharttype.aspx

这只是一个枚举。因此,您可能能够访问描述,但如果不能,则必须实现自己的逻辑,将这些枚举值转换为更具描述性的文本以供显示。


然后对于 Chart.Name,看起来你只是得到 *sheetname* Chart N,其中 N 当然是 sheet:

上图表实例的编号

https://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.chart.name.aspx

不过,还有一点:

Although the Name property is read-only, you can modify a portion of the name by using the P:Microsoft.Office.Interop.Excel.ChartObject.Name property of the parent T:Microsoft.Office.Interop.Excel.ChartObject. The new name you specify replaces the "Chart n" substring in the string returned by the Name property. For example, the following code changes the Name property value of a Chart control from Sheet1 Chart 1 to Sheet1 SalesChart.

Excel.ChartObject chartObjectParent = chart1.Parent as Excel.ChartObject;
chartObjectParent.Name = "SalesChart";

// This message box displays "Sheet1 SalesChart".
MessageBox.Show("The new chart name is: " + chart1.Name);