我有以下代码来打开工作表、复制一个图表、打开演示文稿并粘贴它。
它工作正常,一张图表和一张幻灯片,但在 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");
}
}
}
}