簡體   English   中英

Excel圖表導出到PowerPoint導出

[英]Excel Chart export into PowerPoint export

我試圖通過使用C#的Interop API在PowerPoint中嵌入Excel圖表時遇到問題。 我需要使它適用於Office2003。

我要遵循的過程是,我使用互操作API從模板創建PowerPoint。 然后,我為每個圖表插入一個新的幻燈片,並在這些幻燈片上添加一個Excel.Chart OLE對象。 到目前為止一切都很好。 然后,進入該工作簿,更改數據,並使用chartWizard更新第一張紙上的圖表。 最后,我關閉了Excel工作簿。

問題是圖表在生成的PowerPoint幻燈片中無法正確顯示。 圖表適用於更改后的數據,但未顯示圖表本身的所有操作,例如更改標題,數據范圍,圖表類型等。

它變得陌生。 在PowerPoint中,當我單擊(渲染不正確)生成的圖表並選擇“打開”或“編輯”時,該圖表將立即刷新為正確的設置。 然后,當我關閉圖表並返回到Powerpoint時,圖表將正確呈現。

我花了幾個小時來弄清楚發生了什么,但是似乎什么也沒用。 我試圖打電話給:

  • 生成所有圖表后,PowerPoint.Application.ActivePresenation.UpdateLinks()(是OLE問題嗎?)。
  • Chart.Refresh();
  • Workbook.RefreshAll();

有人可以提示我需要做什么嗎? 我將發布插入下面圖表的代碼。

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

在更新現有圖表時,這似乎對我有用:

Chart.Application.Update();

在插入新圖表時,我想看看這是否對您有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM