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の引数として渡されているためと思われます。
これらのオブジェクトの理解に役立つ一般的な提案はありますか?私には、これを機能させるためにいくつかのキャストトリックを採用できるという予感があります。
ありがとうございました。