C# Excel COM 互操作:在工作表之间移动图表

本文关键字:之间 移动 工作 Excel COM 互操作 | 更新日期: 2023-09-27 18:31:36

我使用 c# excel com 互操作生成了一个工作簿。我有只包含数据的表格和随附的图表。图表和工作表位于工作簿中的单独 Excel 选项卡上。

生成图表和工作表期间,所有工作表首先分组,而图表组在选项卡列表中排名第二。我想将各个图表标签紧跟在相应的工作表标签之后。这是我到目前为止所拥有的:

    private void move_charts_into_position(Excel.Workbook workbook)
    {
        int tab_count = 1;
        foreach (Excel.Chart chart_tab in workbook.Charts)
        {
            Console.WriteLine(chart_tab.Index.ToString()); //prints chart 1 here
            if (tab_count + 1 > workbook.Sheets.Count)
                chart_tab.Move(workbook.Sheets[tab_count], Type.Missing);
            else
                chart_tab.Move(workbook.Sheets[tab_count], workbook.Sheets[tab_count + 1]); //fails at first iteration here
            tab_count+=2;
        }
    }

这将在运行时生成无法获取图表类 COM 异常的 Move 属性。我认为这可能是因为工作表集合正在作为移动的参数传递。

有什么一般性建议可以帮助我理解这些对象吗?我有一种预感,我可以采用一些铸造技巧来让它发挥作用。

谢谢。

C# Excel COM 互操作:在工作表之间移动图表

显然,图表被放置在工作表容器中。我通过从工作簿中的工作表数组中抓取图表来将图表移动到位。