简体   繁体   English

如何将图表从Excel文件复制到电源点?

[英]How to copy chart from an excel file to power point?

I have a C# code building an excel file containing few charts. 我有一个C#代码构建一个包含少量图表的excel文件。 I'm working with Excel through Microsoft.Office.Interop.Excel 12. 我通过Microsoft.Office.Interop.Excel 12使用Excel。

That's working fine but at the same time I need to generate a PowerPoint presentation containing the same exact charts. 这工作正常,但同时我需要生成一个包含相同精确图表的PowerPoint演示文稿。

Is there any way to copy Microsoft.Office.Interop.Excel.ChartObject to PowerPoint file? 有没有办法将Microsoft.Office.Interop.Excel.ChartObject复制到PowerPoint文件? Or any other way to copy those charts in to PowerPoint presentation programmatically? 或者以编程方式将这些图表复制到PowerPoint演示文稿的任何其他方法?

I guess this should work 我想这应该有效

            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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM