使用C#和Powerpoint OpenXML,可以更改文本的字体大小和颜色

我使用openXML和C#生成powerpoint幻灯片,但我似乎无法弄清楚如何更改/设置文本大小和颜色。 这是可能的,有没有任何例子,因为我似乎找不到用谷歌搜索?

我正在构建一个表(类似于这个: http : //blogs.msdn.com/b/brian_jones/archive/2009/08/13/adding-repeating-data-to-powerpoint.aspx )我想改变每个单元格中的许多内容(字体大小,字体颜色,单元格的背景颜色)。

您的注释说明此格式是PowerPoint幻灯片中的表格。

假设
我假设您已经创建了表,表行,表格单元格和显示文本。
假设你已经完成了所有工作,现在你想要添加格式。

如果要格式化文本和单元格,可以使用以下方法执行此操作:

//Create the TableCell for the PowerPoint table you are building. A.TableCell tableCell3 = new A.TableCell(); A.TextBody textBody5 = new A.TextBody(); A.BodyProperties bodyProperties5 = new A.BodyProperties();//Created but not modified. A.ListStyle listStyle5 = new A.ListStyle();//Created but not modified. A.Paragraph paragraph5 = new A.Paragraph(); //First Word: "Hello" with Font-Size 60x and Font-Color Green. A.Run run1 = new A.Run(); A.RunProperties runProperties1 = new A.RunProperties() { Language = "en-US", FontSize = 6000, Dirty = false, SmartTagClean = false };//Set Font-Size to 60px. A.SolidFill solidFill1 = new A.SolidFill(); A.RgbColorModelHex rgbColorModelHex1 = new A.RgbColorModelHex() { Val = "00B050" };//Set Font-Color to Green (Hex "00B050"). solidFill1.Append(rgbColorModelHex1); runProperties1.Append(solidFill1); A.Text text1 = new A.Text(); text1.Text = "Hello"; run1.Append(runProperties1); run1.Append(text1); //Second Word: "World" with Font-Size 60x and Font-Color Blue. A.Run run2 = new A.Run(); A.RunProperties runProperties2 = new A.RunProperties() { Language = "en-US", FontSize = 6000, Dirty = false, SmartTagClean = false };//Set Font-Size to 60px. A.SolidFill solidFill2 = new A.SolidFill(); A.RgbColorModelHex rgbColorModelHex2 = new A.RgbColorModelHex() { Val = "0070C0" };//Set Font-Color to Blue (Hex "0070C0"). solidFill2.Append(rgbColorModelHex2); runProperties2.Append(solidFill2); A.Text text2 = new A.Text(); text2.Text = " World"; run2.Append(runProperties2); run2.Append(text2); //This element specifies the text run properties that are to be used if another run is inserted after the last run specified. //This effectively saves the run property state so that it can be applied when the user enters additional text. //If this element is omitted, then the application can determine which default properties to apply. //It is recommended that this element be specified at the end of the list of text runs within the paragraph so that an orderly list is maintained. // Source: http://msdn.microsoft.com/en-us/library/documentformat.openxml.drawing.endparagraphrunproperties.aspx //Set the default formatting for words entered after "Hello World" with Font-Size 60x and Font-Color Blue. A.EndParagraphRunProperties endParagraphRunProperties5 = new A.EndParagraphRunProperties() { Language = "en-US", FontSize = 6000, Dirty = false };//Set Font-Size to 60px. A.SolidFill solidFill3 = new A.SolidFill(); A.RgbColorModelHex rgbColorModelHex3 = new A.RgbColorModelHex() { Val = "0070C0" };//Set Font-Color to Blue (Hex "0070C0"). solidFill3.Append(rgbColorModelHex3); endParagraphRunProperties5.Append(solidFill3); paragraph5.Append(run1);//Append Run: "Hello". paragraph5.Append(run2);//Append Run: " World". paragraph5.Append(endParagraphRunProperties5);//Append formmatting for any text the user may enter after the words "Hello World". textBody5.Append(bodyProperties5);//Created but not modified. textBody5.Append(listStyle5);//Created but not modified. textBody5.Append(paragraph5);//Append Paragraph: "Hello World" //TableCell Properties. Set Background-Color to Red (Hex "FF0000"). A.TableCellProperties tableCellProperties3 = new A.TableCellProperties(); A.SolidFill solidFill4 = new A.SolidFill(); A.RgbColorModelHex rgbColorModelHex4 = new A.RgbColorModelHex() { Val = "FF0000" };//Red Background for Single TableCell. solidFill4.Append(rgbColorModelHex4); tableCellProperties3.Append(solidFill4);//Append Red Background. tableCell3.Append(textBody5); tableCell3.Append(tableCellProperties3); 

我作弊并使用了“ Open XML SDK 2.0 Productivity Tool for Microsoft Office ”。
我只是创建了一个新的PowerPoint文件,添加了一个表,并编辑了第3个Cell。
然后我运行了SDK工具并反映了“ [] /ppt/presentation.xml ”上的代码。
我在反映的代码中添加了注释,以便您可以更好地理解它。

正如另一位用户指出这在ML中是可能的。 这是我用来解决这个问题的解决方案:

 // Assume we are adding a A.TableCell to A.TableRow... A.TableCell tc = new A.TableCell( new A.TextBody( new A.BodyProperties(), new A.Paragraph(new A.Run( // -> Add the RunProperties as additional Element to A.Run constructor: new A.RunProperties() { FontSize = 600 }, new A.Text("some text") ) ) ), new A.TableCellProperties() ); // Now add the cell to a A.TableRow instance... 

当创建一个A.TableCell单元格以附加到A.Table的行时,我向A.Run添加了一个RunProperty元素,用于嵌套单元格的A.Text,并且我相应地设置了FontSize属性: { FontSize = 600 }

希望能帮助别人。

获得要操作的运行或段落的对象后,可以将任何样式添加到运行或段落属性中。