实现环境:Visual Studio 2010, PowerPoint 2010,OpenXml SDK 2.0.50727
using System.Windows.Forms;
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using P = DocumentFormat.OpenXml.Presentation;
using DocumentFormat.OpenXml.Drawing;
namespace OpenXmlEmptyPresentation
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog dialog = new OpenFileDialog();
dialog.Filter = "Presention File (.pptx)|*.pptx";
dialog.ShowDialog();
string FilePath = dialog.FileName;
if (FilePath.Length > 0)
{
using (PresentationDocument objPresentationDocument = PresentationDocument.Open(FilePath, true))
{
int Position = 1;
PresentationPart objPresentationPart = objPresentationDocument.PresentationPart;
SlidePart objSlidePart = objPresentationPart.AddNewPart<SlidePart>();
P.Slide objSlide = new P.Slide(new P.CommonSlideData (new P.ShapeTree()));
uint uiDrawingObjectId = 1;
P.NonVisualGroupShapeProperties objNonVisualGroupShapeProperties = new P.NonVisualGroupShapeProperties();
P.NonVisualDrawingProperties objNonVisualDrawingProperties = new P.NonVisualDrawingProperties() { Id = (UInt32Value)1U, Name = "" };
P.NonVisualGroupShapeDrawingProperties objNonVisualGroupShapeDrawingProperties = new P.NonVisualGroupShapeDrawingProperties();
P.ApplicationNonVisualDrawingProperties objApplicationNonVisualDrawingProperties = new P.ApplicationNonVisualDrawingProperties();
objNonVisualGroupShapeProperties.Append(objNonVisualDrawingProperties);
objNonVisualGroupShapeProperties.Append(objNonVisualGroupShapeDrawingProperties);
objNonVisualGroupShapeProperties.Append(objApplicationNonVisualDrawingProperties);
objSlide.CommonSlideData.ShapeTree.Append(objNonVisualGroupShapeProperties);
objSlide.CommonSlideData.ShapeTree.AppendChild(new P.GroupShapeProperties());
TransformGroup objTransformGroup = new TransformGroup();
Offset objOffset = new Offset() { X = 0L, Y = 0L };
Extents objExtents = new Extents() { Cx = 0L, Cy = 0L };
ChildOffset objChildOffset = new ChildOffset() { X = 0L, Y = 0L };
ChildExtents objChildExtents = new ChildExtents() { Cx = 0L, Cy = 0L };
objTransformGroup.Append(objOffset);
objTransformGroup.Append(objExtents);
objTransformGroup.Append(objChildOffset);
objTransformGroup.Append(objChildExtents);
objSlide.CommonSlideData.ShapeTree.GroupShapeProperties.Append(objTransformGroup);
P.Shape objShape = new P.Shape();
uiDrawingObjectId++;
//NonVisualShapeProperties,NonVisualDrawingProperties,NonVisualShapeDrawingProperties有歧义,注意空间名的区分。
objShape.NonVisualShapeProperties = new P.NonVisualShapeProperties(new P.NonVisualDrawingProperties() { Id = uiDrawingObjectId, Name = "Title" }, new P.NonVisualShapeDrawingProperties(new ShapeLocks() { NoGrouping = true }),new P.ApplicationNonVisualDrawingProperties(new P.PlaceholderShape(){Type = P.PlaceholderValues.Title}));
objShape.ShapeProperties = new P.ShapeProperties();
objShape.AppendChild(new P.TextBody(new BodyProperties(),new ListStyle(),new Paragraph(new Run(new Text() { Text = "Hello World!" }))));
objSlide.CommonSlideData.ShapeTree.Append(objShape);
P.ColorMapOverride objColorMapOverride = new P.ColorMapOverride();
MasterColorMapping objMasterColorMapping = new MasterColorMapping();
objColorMapOverride.Append(objMasterColorMapping);
objSlide.ColorMapOverride = objColorMapOverride;
objSlide.Save(objSlidePart);
uint maxSlideId = 1;
P.SlideId prevSlideId = null;
foreach (P.SlideId objSlideId in objPresentationPart.Presentation.SlideIdList.ChildElements)
{
if (objSlideId.Id > maxSlideId)
{
maxSlideId = objSlideId.Id;
}
Position--;
if (Position == 0)
{
prevSlideId = objSlideId;
}
}
maxSlideId++;
SlidePart objLastSlidePart;
if (prevSlideId != null)
{
objLastSlidePart = (SlidePart)objPresentationPart.GetPartById(prevSlideId.RelationshipId);
}
else
{
objLastSlidePart = (SlidePart)objPresentationPart.GetPartById(((P.SlideId)(objPresentationPart.Presentation.SlideIdList.ChildElements[0])).RelationshipId);
}
if (null != objLastSlidePart.SlideLayoutPart)
{
objSlidePart.AddPart<SlideLayoutPart>(objLastSlidePart.SlideLayoutPart);
}
P.SlideId newSlideId = objPresentationPart.Presentation.SlideIdList.InsertAfter<P.SlideId>(new P.SlideId(), prevSlideId);
newSlideId.Id = maxSlideId;
newSlideId.RelationshipId = objPresentationPart.GetIdOfPart(objSlidePart);
objPresentationPart.Presentation.Save();
}
}
}
}
}
相关资源下载: http://download.csdn.net/detail/tx_officedev/3892557