如何在 C# 中以编程方式更改 PPT 中的文本字段?
How to change text field in a PPT programmatically in C#?
我有一个 PPT 模板,我需要用来自我的数据库的数据以编程方式替换一些文本字段,然后将 ppt 转换为 pdf 并将其作为电子邮件附件发送。我不确定如何更改 PowerPoint 演示文稿中文本字段的内容。我认为需要使用 OpenXML。
请帮我将动态数据输入到我的ppt模板中。
我以前使用过 Microsoft 的 DocumentFormat.OpenXml
,但使用的是 word 文件。我用它来替换 Power Point 文件中的一些文本。
这是我的简单测试代码片段:
static void Main(string[] args)
{
// just gets me the current location of the assembly to get a full path
string fileName = GetFilePath("Resource\Template.pptx");
// open the presentation in edit mode -> the bool parameter stands for 'isEditable'
using (PresentationDocument document = PresentationDocument.Open(fileName, true))
{
// going through the slides of the presentation
foreach (SlidePart slidePart in document.PresentationPart.SlideParts)
{
// searching for a text with the placeholder i want to replace
DocumentFormat.OpenXml.Drawing.Text text =
slidePart.RootElement.Descendants<DocumentFormat.OpenXml.Drawing.Text>().FirstOrDefault(x => x.Text == "[[TITLE]]");
// change the text
if (text != null)
text.Text = "My new cool title";
// searching for the second text with the placeholder i want to replace
text =
slidePart.RootElement.Descendants<DocumentFormat.OpenXml.Drawing.Text>().FirstOrDefault(x => x.Text == "[[SUBTITLE]]");
// change the text
if (text != null)
text.Text = "My new cool sub-title";
}
document.Save();
}
}
在我的例子中,我有一个简单的演示文稿,其中有一张幻灯片,在文本字段中,我将条目“[[TITLE]]”和“[[SUBTITLE]]”替换为此文本。
对于我的测试文件,这很有效,但您可能需要为您的特定文件采用/更改某些内容。
例如。在 Word 中,我有时会在一个 运行 元素中将文本拆分为多个文本部分,并且必须编写一种逻辑来“收集”这些数据,并将它们替换为一个文本元素,其中包含我想要的新文本或也许您需要搜索其他后代类型。
我有一个 PPT 模板,我需要用来自我的数据库的数据以编程方式替换一些文本字段,然后将 ppt 转换为 pdf 并将其作为电子邮件附件发送。我不确定如何更改 PowerPoint 演示文稿中文本字段的内容。我认为需要使用 OpenXML。 请帮我将动态数据输入到我的ppt模板中。
我以前使用过 Microsoft 的 DocumentFormat.OpenXml
,但使用的是 word 文件。我用它来替换 Power Point 文件中的一些文本。
这是我的简单测试代码片段:
static void Main(string[] args)
{
// just gets me the current location of the assembly to get a full path
string fileName = GetFilePath("Resource\Template.pptx");
// open the presentation in edit mode -> the bool parameter stands for 'isEditable'
using (PresentationDocument document = PresentationDocument.Open(fileName, true))
{
// going through the slides of the presentation
foreach (SlidePart slidePart in document.PresentationPart.SlideParts)
{
// searching for a text with the placeholder i want to replace
DocumentFormat.OpenXml.Drawing.Text text =
slidePart.RootElement.Descendants<DocumentFormat.OpenXml.Drawing.Text>().FirstOrDefault(x => x.Text == "[[TITLE]]");
// change the text
if (text != null)
text.Text = "My new cool title";
// searching for the second text with the placeholder i want to replace
text =
slidePart.RootElement.Descendants<DocumentFormat.OpenXml.Drawing.Text>().FirstOrDefault(x => x.Text == "[[SUBTITLE]]");
// change the text
if (text != null)
text.Text = "My new cool sub-title";
}
document.Save();
}
}
在我的例子中,我有一个简单的演示文稿,其中有一张幻灯片,在文本字段中,我将条目“[[TITLE]]”和“[[SUBTITLE]]”替换为此文本。
对于我的测试文件,这很有效,但您可能需要为您的特定文件采用/更改某些内容。 例如。在 Word 中,我有时会在一个 运行 元素中将文本拆分为多个文本部分,并且必须编写一种逻辑来“收集”这些数据,并将它们替换为一个文本元素,其中包含我想要的新文本或也许您需要搜索其他后代类型。