我可以创建包含许多单元格的PowerPoint表格,但默认字体(28磅)太大。如果无法访问用户的PowerPoint模板,如何设置我创建的表的字体?我目前所能做的就是:
创建一个包含所有单元格并设置字体的范围:
List<string> names = new List<string>();
foreach (PowerPoint.Column column in table.Columns)
foreach (PowerPoint.Cell cell in column.Cells) {
cell.Shape.TextFrame.TextRange.Text = "";
names.Add(cell.Shape.Name);
}
PowerPoint.ShapeRange range = ppt.ActivePresentation.Slides.Item(1).Shapes.Range(names.ToArray());
range.TextFrame.TextRange.Font.Size = 12;
我正在使用C#通过其COM API控制PowerPoint 2003..2010。我的实验是使用PowerPoint 2003进行的。
答案 0 :(得分:1)
在PPT 2010中,这不需要在单元格中输入文本(vba,但应该很容易翻译)。出于演示目的,我正在使用当前选定的表;将任何其他对该表的引用替换为oTbl:
Dim oTbl As Table
Dim lCol As Long
Dim lRow As Long
Set oTbl = ActiveWindow.Selection.ShapeRange(1).Table
With oTbl
For lCol = 1 To .Columns.Count
For lRow = 1 To .Rows.Count
.Cell(lRow, lCol).Shape.TextFrame.TextRange.Font.Size = 28
Next
Next
End With
在PPT2003中,正如您所见,您需要向单元格添加文本以使格式化为“占用”(不幸的是,这会严重减慢速度)。
由于PPT自动化中还有其他实例,您可能需要暂时填写文本然后将其删除,您可能需要编写一个可以将形状传递给的通用例程。
With Shape.TextFrame.TextRange
If Len(.Text) = 0 Then
.Text = "!@#$%" ' or some other lunatic string not likely to be found in nature
End If
End With
用这个“预处理”形状,做任何必要的事情,然后用一个伴侣程序“取消对待”它,测试文本是否为“!@#$%”并将其设置回“”如果是这样的话,请不要这样做。