C#:如何将Excel单元格范围和图表数据复制到电源点幻灯片

我有Excel工作表中的数据和图表,我需要在运行时从Excel复制到电源点幻灯片。

我有一个代码工作正常,但代码只能复制图表数据,Excel表格范围数据。

请看我的Excel的镜头。 所以,任何人都有一个想法是如何在我的工作表中的数据,我需要以编程方式复制到PowerPoint幻灯片。 在这里输入图像说明

这里是我用来dynamic地将范围数据和图表数据复制到PowerPoint的代码。

private void Form1_Load(object sender, EventArgs e) { pptNS.ApplicationClass powerpointApplication = null; pptNS.Presentation pptPresentation = null; pptNS.Slide pptSlide = null; pptNS.ShapeRange shapeRange = null; xlNS.ApplicationClass excelApplication = null; xlNS.Workbook excelWorkBook = null; xlNS.Worksheet targetSheet = null; xlNS.ChartObjects chartObjects = null; xlNS.ChartObject existingChartObject = null; xlNS.Range destRange = null; string paramPresentationPath = @"D:\test\Chart Slide.pptx"; string paramWorkbookPath = @"D:\test\MyExcelData.xlsx"; object paramMissing = Type.Missing; try { // Create an instance of PowerPoint. powerpointApplication = new pptNS.ApplicationClass(); // Create an instance Excel. excelApplication = new xlNS.ApplicationClass(); // Open the Excel workbook containing the worksheet with the chart // data. excelWorkBook = excelApplication.Workbooks.Open(paramWorkbookPath, paramMissing, paramMissing, paramMissing, paramMissing, paramMissing, paramMissing, paramMissing, paramMissing, paramMissing, paramMissing, paramMissing, paramMissing, paramMissing, paramMissing); // Get the worksheet that contains the chart. targetSheet = (xlNS.Worksheet)(excelWorkBook.Worksheets["Spain"]); // Get the ChartObjects collection for the sheet. chartObjects = (xlNS.ChartObjects)(targetSheet.ChartObjects(paramMissing)); // Create a PowerPoint presentation. pptPresentation = powerpointApplication.Presentations.Add( Microsoft.Office.Core.MsoTriState.msoTrue); // Add a blank slide to the presentation. pptSlide = pptPresentation.Slides.Add(1, pptNS.PpSlideLayout.ppLayoutBlank); // capture range //var writeRange = targetSheet.Range["A1:B15"]; destRange = targetSheet.get_Range("A1:B15"); //copy range destRange.Copy(); // Paste the chart into the PowerPoint presentation. shapeRange = pptSlide.Shapes.Paste(); // Position the chart on the slide. shapeRange.Left = 60; shapeRange.Top = 100; // Get or capture the chart to copy. existingChartObject =(xlNS.ChartObject)(chartObjects.Item(1)); // Copy the chart from the Excel worksheet to the clipboard. existingChartObject.Copy(); // Paste the chart into the PowerPoint presentation. shapeRange = pptSlide.Shapes.Paste(); //Position the chart on the slide. shapeRange.Left = 90; @shapeRange.Top = 100; // Save the presentation. pptPresentation.SaveAs(paramPresentationPath, pptNS.PpSaveAsFileType.ppSaveAsOpenXMLPresentation, Microsoft.Office.Core.MsoTriState.msoTrue); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { // Release the PowerPoint slide object. shapeRange = null; pptSlide = null; // Close and release the Presentation object. if (pptPresentation != null) { pptPresentation.Close(); pptPresentation = null; } // Quit PowerPoint and release the ApplicationClass object. if (powerpointApplication != null) { powerpointApplication.Quit(); powerpointApplication = null; } // Release the Excel objects. targetSheet = null; chartObjects = null; existingChartObject = null; // Close and release the Excel Workbook object. if (excelWorkBook != null) { excelWorkBook.Close(false, paramMissing, paramMissing); excelWorkBook = null; } // Quit Excel and release the ApplicationClass object. if (excelApplication != null) { excelApplication.Quit(); excelApplication = null; } GC.Collect(); GC.WaitForPendingFinalizers(); } } 

请看我的代码,并让我知道该怎么纠正我的代码,因为单元格范围和图表我都可以复制到幻灯片。

我怀疑这是像复制粘贴一样简单。 您可能需要先在PowerPoint幻灯片中创build一个表格,然后将表格值设置为表格中的Value Range 。 我熟悉PowerPoint互操作,但它可能看起来像这样:

 var table = pptSlide.Shapes.AddTable(); destRange = targetSheet.get_Range("A1:B15"); for (int i = 1; i <= destRange.Rows; i++) { for (int j = 1; j <= destRange.Columns; j++) { table.Table.Cell(i, j).Shape.TextFrame.TextRange.Text =destRange[i, j].Text; } }