一下代码在PowerPoint2003的第二个Slide上嵌入一个Excel Sheet(有且只有一个Sheet)。
using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using PowerPoint = Microsoft.Office.Interop.PowerPoint;
using Excel = Microsoft.Office.Interop.Excel;
using Office = Microsoft.Office.Core;
namespace PPTEmbedWorkSheet
{
public partial class Form1 : Form
{
private OpenFileDialog OFD = new OpenFileDialog();
private string _PPTPath;
public Form1()
{
InitializeComponent();
OFD.Multiselect = false;
button2.Enabled = false;
}
private void button1_Click(object sender, EventArgs e)
{
OFD.Filter = "PowerPoint Presentation (2003)|*.ppt";
OFD.ShowDialog();
_PPTPath = OFD.FileName;
button2.Enabled = true;
}
private void button2_Click(object sender, EventArgs e)
{
OFD.Filter = "Excel Workbook (2003)|*.xls";
OFD.ShowDialog();
string Path = OFD.FileName;
string temp = AppDomain.CurrentDomain.BaseDirectory + "temp.xls";
File.Copy(Path, temp, true);
Excel.Application xlApp = new Excel.Application();
var missing = Type.Missing;
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(temp, missing, missing, missing, missing, missing,
missing, missing, missing, missing, missing, missing, missing, missing, missing);
Excel.Worksheet xlWorksheet = (Excel.Worksheet)xlWorkbook.Sheets[2];
xlApp.Visible = true;
foreach (var obj in xlWorkbook.Sheets)
{
Excel.Worksheet ws = (Excel.Worksheet)obj;
if (!ws.Name.Equals(xlWorksheet.Name))
{
ws.Delete();
}
}
xlWorkbook.Save();
xlWorkbook.Close(missing, missing, missing);
xlApp.Quit();
PowerPoint.Application ppApp = new PowerPoint.Application();
PowerPoint.Presentation ppP = ppApp.Presentations.Open(_PPTPath, Office.MsoTriState.msoFalse,
Office.MsoTriState.msoFalse, Office.MsoTriState.msoFalse);
ppApp.Visible = Office.MsoTriState.msoTrue;
ppP.NewWindow();
PowerPoint.Slide ppS = ppP.Slides[2];
try
{
/*这里一定不能有ClassName否则会报错*/
PowerPoint.Shape shap = ppS.Shapes.AddOLEObject(0, 0, 200, 100,
"", temp, Office.MsoTriState.msoFalse, temp, 1,
"test", Office.MsoTriState.msoFalse);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
File.Delete(temp);
Close();
}
}
}
}