图表的SetSourceData返回数据透视表的HRESULT E_FAIL(Excel C#)

时间:2016-09-28 07:52:46

标签: c# excel charts pivot-table pivot-chart

我想在工作表中创建几个数据透视表,并从每个数据透视表创建一个图表。 第一个数据透视表和第一个图表是正常创建的。在我创建第二个数据透视表之后,我想在secound数据透视表中添加第二个包含Source的图表,但这比HRESULT E_FAIL还要重,第二个图表有第一个数据透视表的来源,我无法更改。

server/explorer/css/loopbackStyles.css

提前感谢您的帮助。

此致

丹尼尔

1 个答案:

答案 0 :(得分:0)

我在VSTO C#项目中遇到了类似的问题。

在我的情况下,我必须做的是在创建图表之前选择枢轴范围。

我发现,如果在创建图表时选择了第一个轴的单元格,则图表将绑定到该轴,您无法更改源数据(事实上,您不能这样做即使在Excel中,图表的源范围也是灰色的。

我通过在创建图表之前选择之前的来解决。

Range rangePivot2 = pivotTable2.TableRange1;
rangePivot2.Select();
Chart chart = sheet.Controls.AddChart(cellsWhereTheChartWillBeDrawn, "secondChart");
chart.SetSourceData(rangePivot2); /* this won't give you E_FAIL... but it's not really needed */

我的代码示例是VSTO伪代码,但我相信类似的方法也适用于纯Excel COM自动化。