2012-04-19 10 views
0

私はc#excel com interopを使用してワークブックを生成しました。私はちょうどデータと一緒にチャートを持っているシートを持っています。チャートとシートは、ワークブック内の別々のタブに表示されます。c#excel com interop:シート間でチャートを移動する

チャートおよびシートの生成中に、すべてのシートが最初にグループ化され、チャートのグループがタブリスト内で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; 
     } 
    } 

これは、実行時にチャートクラス COM例外の移動プロパティを取得できませんを生成します。 SheetsコレクションがMoveの引数として渡されている可能性が高いと思います。

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

ありがとうございます。

答えて

0

明らかに、チャートはシートコンテナに配置されます。ワークブックのシート配列からチャートを取得して、チャートを適切な位置に移動します。