繁体   English   中英

从ppt演示文稿中选择某些幻灯片并粘贴excel图表

[英]select certain slide from ppt presentation and paste excel chart

我有以下代码来打开工作表,复制一个图表,打开演示文稿并将其粘贴。

对于一张图表和一张幻灯片,它工作正常,但是在XLSM中有8张图表,因此PPTX中有8张幻灯片,我不知道如何选择第二张图表并将其粘贴到第二张或第三张幻灯片中介绍。

使用PowerPoint.Slide curSlide = pptApp.ActiveWindow.View.Slide; 它选择当前幻灯片或幻灯片1。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Office.Core;
using xlNS = Microsoft.Office.Interop.Excel;
using PowerPoint = Microsoft.Office.Interop.PowerPoint;
using Graph = Microsoft.Office.Interop.Graph;
using System.Runtime.InteropServices;

namespace WindowsFormsApplication3
{
   public partial class Form1 : Form
   {
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {

        try
        {
            xlNS.Application excelApplication = null;
            xlNS.Workbook excelWorkBook = null;
            xlNS.Worksheet targetSheet = null;
            xlNS.ChartObjects chartObjects = null;
            xlNS.ChartObject existingChartObject = null;

            String Excelpath = "C:\\Users\\Diego\\Desktop\\Indicador Mensal.xlsm";
            excelApplication = new xlNS.Application();//Instancia o excel e abre o XLSM
            excelWorkBook = excelApplication.Workbooks.Open(Excelpath,
                 Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                 Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                 Type.Missing, Type.Missing, Type.Missing, Type.Missing);

            PowerPoint.Application pptApp = new PowerPoint.Application();
            pptApp.Presentations.Open("C:\\Users\\Diego\\Desktop\\Teste.pptx", MsoTriState.msoFalse, MsoTriState.msoTrue, MsoTriState.msoTrue); //Abre o PPTX
            PowerPoint.Slide curSlide = pptApp.ActiveWindow.View.Slide;

            xlNS.Worksheet Ws = new xlNS.Worksheet();
            Ws = (xlNS.Worksheet)excelWorkBook.Worksheets[1];//Número da Planilha que contém o gráfico
            Ws.Activate();

            targetSheet = (xlNS.Worksheet)(excelWorkBook.Worksheets["Assumidos no Prazo"]);
            chartObjects = (xlNS.ChartObjects)(targetSheet.ChartObjects(Type.Missing));
            existingChartObject = (xlNS.ChartObject)(chartObjects.Item(1));
            existingChartObject.Copy();
            curSlide.Shapes.Paste();

        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
        finally
        {
            MessageBox.Show("Finalizado");
        }

    }
}

}

使用以下代码解决了问题:

p = pptApp.ActivePresentation; 
slides = p.Slides; 
slides[3].Select(); 
Ppt.Slide slide3 = pptApp.ActiveWindow.View.Slide;

暂无
暂无

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

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