创build自定义Excel饼图标签

我使用C#以编程方式在Excel中创build饼图。 我需要为切片添加一些自定义标签。 基本上,我希望饼图左侧的切片标签从图表区域的左上angular开始,然后向下。 在右边是同样的事情。 我的问题是,我怎样才能find切片的圆弧的中点知道图表的哪一面应该继续?

我想如果我能得到这个系列中的要点,但我没有看到它。

Point p = (Point)oSeriesCollection.Item(1).Points(1); 

有什么build议么?

编辑

意识到我应该包括更多的细节。 当我说“自定义标签”时,我的意思是,我将使用类似下面的代码将文本框放在图表上。 从所有的search我已经完成,我还没有find另一种方式来做到这一点(使用内置的数据标签)。 如果有一种方法来调整和放置内置的数据标签,我很乐意提供有关如何实现这一点的任何提示。

 oChart.Chart.Shapes.AddTextbox(MsoTextOrientation.msoTextOrientationHorizontal, 0, 0, 100, 100).TextFrame.Characters(Type.Missing, Type.Missing).Text = "text"; 

编辑2任何人在这里感兴趣的是我在Excel论坛(它使用VBA)find的答案。 添加文本框的行只是一个占位符,但是如果中心位于0到180之间,它将会在右侧,否则将会在左侧,当然,我必须将它们向下移动每一个。 另一件要考虑的事情是,如果饼已经旋转,中心值将需要由FirstSliceAngle修改。

 double total=0; foreach (object item in (Array)oSeriesCollection.Item(1).Values) { total+=Convert.ToDouble(item); } double runtotal=0; for (int x=1; x <= ((Array)oSeriesCollection.Item(1).Values).GetUpperBound(0); x++) { object item = ((Array)oSeriesCollection.Item(1).Values).GetValue(x); double center = (runtotal + Convert.ToDouble(item) / 2) / total * 360; runtotal+=Convert.ToDouble(item); chart.Chart.Shapes.AddTextbox(MsoTextOrientation.msoTextOrientationHorizontal, 0, 0, 50, 10).TextFrame.Characters(Type.Missing, Type.Missing).Text = "some text"; }