【问题标题】:Change Default Chart place in excel在excel中更改默认图表位置
【发布时间】:2014-02-23 17:43:55
【问题描述】:

嗨,我可以像这样从 C# 生成 excel 图表

我想在特定单元格中设置默认聊天地点(例如单元格 E15)

到目前为止,我已经尝试过像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;

但我得到错误'参数不正确'

我也在这个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);

但是没用

【问题讨论】:

    标签: c# charts excel-2007


    【解决方案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;
    

    【讨论】:

    • 它工作...你只是想念'(float)((double)chartPlacementRange.Top);'在我添加之后....我可以在任何地方设置图表位置谢谢
    • 很高兴你知道了。
    【解决方案2】:

    怎么样:

     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);
    

    【讨论】:

    • 我仍然收到消息错误参数不正确...您有其他解决方案吗?
    • 我认为 .item(myChart)...mychart 中的问题需要用其他东西替换(正确的参数)
    • 试试上面的编辑版本。 (您需要为 Item 方法提供对象名称或索引 - 所以我已将其更改为提供名称)
    • 我收到新错误...'找不到指定名称的项目'..我尝试设置 myChart.name = "test" 并更改 .item(myChart.Name = "test ") 但没有工作
    • 也许试试上面的编辑? (您可能需要图表的名称而不是 ChartObject 的名称)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多