Извините за действительно позднюю задержку, надеюсь, вы все еще ищете это. Обратите внимание, что НЕ использует SDK - он просто использует System.IO.Packaging
и Linq (и литералы XML). В любом случае, вот что нужно сделать:
- Создать презентацию. На слайде 3
добавить 4 текстовых поля.
- Поместите текст в три из них и назовите
их "Sample1", "Sample2" и
"Sample3".
- В последнем текстовом поле поставить две строки
текста, а затем делает эти строки
отверстия от пуль. Назовите его «ListSample1».
Это все, что тебе нужно. Затем сохраните файл и запишите путь и измените переменную filePath
ниже, чтобы отразить путь вашей презентации.
Запустите приведенное ниже в консольном приложении:
Imports System.IO
Imports System.IO.Packaging ''# Add reference to WindowsBase for this
Imports <xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main">
Imports <xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">
Imports <xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
Module Module1
Public Const documentRelationshipType As String = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument"
Sub Main()
Dim slide, document As XElement
Dim pptPackage As Package = Nothing
Dim slidePart, documentPart As PackagePart
Dim filePath As String = "C:\Users\Me\Documents\visual studio 2010\Projects\FillPowerPoint\FillPowerPoint\sample.pptx"
pptPackage = Package.Open(filePath, FileMode.Open, FileAccess.ReadWrite)
Using pptPackage
Dim documentRelationship As PackageRelationship = pptPackage.GetRelationshipsByType(documentRelationshipType).FirstOrDefault
Dim documentUri As Uri = PackUriHelper.ResolvePartUri(New Uri("/", UriKind.Relative), documentRelationship.TargetUri)
documentPart = pptPackage.GetPart(documentUri)
document = XElement.Load(New StreamReader(documentPart.GetStream))
Dim slideList = From e In document.<p:sldIdLst>.<p:sldId>
Dim slideIndex As Integer = 3 ''# this is the slide number we want, 1-based
Dim slideReference As String = slideList(slideIndex - 1).@r:id.ToString
slidePart = pptPackage.GetPart(PackUriHelper.ResolvePartUri(documentPart.Uri, documentPart.GetRelationship(slideReference).TargetUri))
slide = XElement.Load(New StreamReader(slidePart.GetStream))
''# Replace just text value in Sample1 textbox
Dim Sample1 = From e In slide.<p:cSld>.<p:spTree>.<p:sp> Where e.<p:nvSpPr>.<p:cNvPr>.@name = "Sample1" Select e.<p:txBody>.<a:p>.<a:r>.<a:t>.SingleOrDefault
Sample1.Value = "new text in sample 1"
''# Replace text and make bold inn Sample2 textbox
Dim Sample2 = From e In slide.<p:cSld>.<p:spTree>.<p:sp> Where e.<p:nvSpPr>.<p:cNvPr>.@name = "Sample2" Select e.<p:txBody>.<a:p>.<a:r>.SingleOrDefault
Sample2.<a:rPr>.SingleOrDefault.Add(New XAttribute("b", 1))
Sample2.<a:t>.SingleOrDefault.Value = "new bold text in sample 2"
''# Replace text and make bold inn Sample2 textbox
Dim Sample3 = From e In slide.<p:cSld>.<p:spTree>.<p:sp> Where e.<p:nvSpPr>.<p:cNvPr>.@name = "Sample3" Select e.<p:txBody>.SingleOrDefault
Sample3.<a:p>.Remove()
Dim newParagraphs As XElement = <placeholder>
<a:p>
<a:r>
<a:rPr lang="en-US" dirty="0" smtClean="0"/>
<a:t>Sample3</a:t>
</a:r>
</a:p>
<a:p>
<a:r>
<a:rPr lang="en-US" smtClean="0"/>
<a:t>With a new paragraph</a:t>
</a:r>
<a:endParaRPr lang="en-US" dirty="0"/>
</a:p>
</placeholder>
Sample3.SingleOrDefault.Add(newParagraphs.Elements)
''# Create a new list of bullets
Dim s() As String = {"Bullet 1", "Bullet 2", "Bullet 3"}
Dim ListSample1 = From e In slide.<p:cSld>.<p:spTree>.<p:sp> Where e.<p:nvSpPr>.<p:cNvPr>.@name = "ListSample1" Select e.<p:txBody>.SingleOrDefault
ListSample1.<a:p>.Remove()
ListSample1.SingleOrDefault.Add(From e In s Select <a:p>
<a:pPr marL="285750" indent="-285750">
<a:buFont typeface="Arial" pitchFamily="34" charset="0"/>
<a:buChar char="•"/>
</a:pPr>
<a:r>
<a:rPr lang="en-US" dirty="0" smtClean="0"/>
<a:t><%= e %></a:t>
</a:r>
</a:p>)
slide.Save(slidePart.GetStream)
End Using
End Sub
End Module
Извините, я знаю, что это сильно зависит от литералов VB и XML, но C # должен уметь делать то же самое с некоторой работой по конвертации.