2013-04-02 79 views
4

我有一個C#代碼構建一個包含少量圖表的Excel文件。我正在使用Excel通過Microsoft.Office.Interop.Excel 12.如何將圖表從Excel文件複製到電源點?

這工作正常,但同時我需要生成包含相同的確切圖表的PowerPoint演示文稿。

是否有任何方法可以將 Microsoft.Office.Interop.Excel.ChartObject複製到PowerPoint文件?或者以任何其他方式將這些圖表以編程方式複製到PowerPoint演示文稿中?

+0

你可以建立圖表直接與VBA到PowerPoint,Excel中使用最多(幾乎所有)相同的方法可用。除非您需要* Excel工作簿中的圖表出於某種其他原因。 –

+0

我意識到這不是一個在兩個不同的應用程序之間複製對象的最佳解決方案,但是因爲我需要給用戶一個選擇,如果他希望這個圖表是Excel或PowerPoint,或者兩者同時我看不出有任何意義, PowerPoint已經有一個用於Excel的PowerPoint。 – Nelrum

回答

4

我想這應該工作

  using xlNS = Microsoft.Office.Interop.Excel; 
      using Microsoft.Office.Interop.PowerPoint; 

      xlNS.ApplicationClass excelApplication = null; 
      xlNS.Workbook excelWorkBook = null; 
      xlNS.Worksheet targetSheet = null; 
      xlNS.ChartObjects chartObjects = null; 
      xlNS.ChartObject existingChartObject = null; 
      Microsoft.Office.Interop.PowerPoint.ShapeRange shapeRange = null; 
      Microsoft.Office.Interop.PowerPoint.Slide CurSlide; 


      excelApplication = new xlNS.ApplicationClass();//Create New Excel 
      excelWorkBook = excelApplication.Workbooks.Open(Excelpath, 
       paramMissing, paramMissing, paramMissing, paramMissing, paramMissing, 
       paramMissing, paramMissing, paramMissing, paramMissing, paramMissing, 
       paramMissing, paramMissing, paramMissing, paramMissing); 

      Ws = (Excel.Worksheet)excelWorkBook.Worksheets[6];//Your Sheet that contain Chart 
      Ws.Activate(); 
      targetSheet = (xlNS.Worksheet)(excelWorkBook.Worksheets["SheetName"]); 
      chartObjects = (xlNS.ChartObjects)(targetSheet.ChartObjects(paramMissing)); 
      existingChartObject = (xlNS.ChartObject)(chartObjects.Item(1)); 

      existingChartObject.Copy(); 
      shapeRange = CurSlide.Shapes.Paste();//Paste it to your Current Slide 
      shapeRange.Left = 435; 
      shapeRange.Top = 80; //Formatting your chart 
+0

感謝您的好例子。出於某種原因,我認爲這會比簡單的複製粘貼更困難。 – Nelrum

相關問題