在Excel中更改默认图表位置

时间:2014-02-20 02:38:17

标签: c# charts excel-2007

嗨,我可以像C / C这样在C#中生成excel图表

enter image description here

我想在特定单元格中设置默认聊天位置(示例单元格E15)

enter image description here

到目前为止,我已经尝试了像this

这样的解决方案
        Excel.Range chartRange;
        Excel.ChartObjects xlCharts = (Excel.ChartObjects)oWorkSheet.ChartObjects(Type.Missing);
        Excel.ChartObject myChart = (Excel.ChartObject)xlCharts.Add(10, 80, 300, 150);
        Excel.Chart chartPage = myChart.Chart;

        chartRange = oWorkSheet.get_Range("E5", "F13");
        chartPage.SetSourceData(chartRange, misValue);
        chartPage.ChartType = Excel.XlChartType.xlColumnClustered;

        Excel.Range chartPlacementRange = oWorkSheet.get_Range("E15", "E15");
        chartPage.Shapes.Item(myChart.Name).Top = (float)((double)chartPlacementRange.Top);
        chartPage.Shapes.Item(myChart.Name).Left = (float)((double)chartPlacementRange.Left);
        //chartPage.Shapes.Item(myChart).Top = 100;
        //chartPage.Shapes.Item(myChart).Left = 100;

但我收到错误'参数incorect'

我在这个link尝试解决方案 但在我的porgram中它不可用'Range'在输入SetSourceData之后再按空格

任何想法,如何正确地做到这一点?


更新

我认为不正确的参数是.item(myChart)
所以我把它改成.item(myChart.Name)*感谢Baldrick
但它给出了新的错误 '未找到具有指定名称的项目

我尝试使用此代码提供myChart名称

myChart.Name = "test";
//then changed
chartPage.Shapes.Item(myChart.Name = "test").Top = (float)((double)chartPlacementRange.Top);

但是没有用

2 个答案:

答案 0 :(得分:1)

怎么样:

 Excel.Range chartPlacementRange = oWorkSheet.get_Range("E15", "E15");
 chartPage.Shapes.Item(chartPage.Name).Top = (float)((double)chartPlacementRange.Top);
 chartPage.Shapes.Item(chartPage.Name).Left = (float)((double)chartPlacementRange.Left);

答案 1 :(得分:1)

如何:

excel.ChartObject myChart = (Excel.ChartObject)xlCharts.Add(10, 80, 300, 150);
Excel.Range chartPlacementRange = oWorkSheet.get_Range("E15", "E15");
myChart.Left = chartPlacementRange.Left;
myChart.Top = chartPlacementRange.Top;