2010-12-03 14 views
1

ExcelチャートをPowerPointに埋め込む際に、 Interop APIのC#を使用して問題が発生しました。私はこれをOffice2003のために働かせる必要があります。ExcelのグラフをPowerPointにエクスポートする

私が従うプロセスは、interop APIを使用してテンプレート からPowerPointを作成することです。次に、各グラフに新しいスライドを挿入し、 に、これらのスライドにExcel.Chart OLEオブジェクトを追加します。すべてこれまでのところよくできています。次に、そのブックに を移動してデータを変更し、chartWizardを使用して最初のシートの グラフを更新します。最後に、Excelワークブックを閉じます。

問題は、生成された PowerPointスライドにグラフが正しく表示されないことです。チャートは変更されたデータに適合しますが、タイトル、データ範囲、 チャートタイプなどの変更は、チャート自体のすべての アクションは表示されません。

これは見知らぬ人になります。 PowerPointで、(間違ってレンダリングされた) 生成されたグラフをクリックし、開いているか編集するかを選択すると、グラフは即座に の正しい設定に更新されます。グラフを閉じてパワーポイントに戻ると、 グラフが正しく描画されます。

何が起こっているのか把握するのに何時間も費やしましたが、何とかしても何も役に立たないようです。 私はコールする試みた:

  • すべてのチャート が生成されるPowerPoint.Application.ActivePresenation.UpdateLinks()の後に(これはOLEの問題です?)。
  • Chart.Refresh();
  • Workbook.RefreshAll();

誰かが私に何をする必要があるかのヒントを教えてもらえますか?私はコード を投稿し、下の図表を挿入します。

Chart.Application.Update(); 

私は新しいグラフを挿入しながら、これはあなたのために働くかどうかを確認するために興味があると思います:

//Add the Workbook 
Excel.Workbook workbook = 
(Excel.Workbook)slide.Shapes.AddOLEObject(basePoint.X, basePoint.Y, 
chartSize.Width, chartSize.Height, 
MsoTriState.msoFalse).OLEFormat.Object; 

//update the worksheet with data 
Excel.Worksheet datasheet = 
(Excel.Worksheet)workbook.Worksheets["Sheet1"]; 
datasheet.Cells.ClearContents(); 

//set table contents 
//<<SNIP code that fills data sheet with contents from our custom 
dataTable object>> 

//fetch chart 
Excel.Chart chart = (Excel.Chart)workbook.Charts["Chart1"]; 
Excel.Range range = datasheet.get_Range(datasheet.Cells[1, 1], 
datasheet.Cells[dataTable.RowCount + 1, dataTable.ColumnCount + 1]); 
chart.ChartWizard(range, Excel.XlChartType.xlBarStacked, Type.Missing, 
Excel.XlRowCol.xlRows, 1, 1, true, dataTable.ChartTitle, "", "", ""); 

//release objects 
datasheet = null; 
chart = null; 
range = null; 
workbook.Close(false, Type.Missing, Type.Missing); 
workbook = null; 
+0

これはこれまでに実現しましたか? – DannyT

答えて

1

これは、既存のチャートを更新するときに私のために働くように見えました。

関連する問題