0

c#Excelcom相互運用機能を使用してワークブックを生成しました。データだけのシートとそれに付随するチャートがあります。チャートとシートは、ワークブック内の個別のExcelタブにあります。

チャートとシートの生成中、すべてのシートが最初にグループ化され、チャートのグループがタブリストの2番目になります。個々のチャートタブを、対応するシートタブの直後に配置したいと思います。これは私がこれまでに持っているものです:

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

これにより、実行時にChartクラスのCOM例外のMoveプロパティを取得できなくなります。SheetsコレクションがMoveの引数として渡されているためと思われます。

これらのオブジェクトの理解に役立つ一般的な提案はありますか?私には、これを機能させるためにいくつかのキャストトリックを採用できるという予感があります。

ありがとうございました。

4

1 に答える 1

0

どうやら、グラフはシート コンテナーに配置されます。ワークブックのシート配列からグラフを取得して、グラフを所定の位置に移動します。

于 2012-04-20T17:10:32.413 に答える