【问题标题】:write text in powerpoint c#在 powerpoint c# 中编写文本
【发布时间】:2012-09-26 20:36:50
【问题描述】:

我想通过 c# 中的自动化在 powerpoint 中编写文本。

我为此使用 Microsoft.Office.Interop.PowerPoint

我的示例代码:

objSlide = objSlides.Add(1, PowerPoint.PpSlideLayout.ppLayoutCustom);
objTextRng = objSlide.Shapes[1].TextFrame.TextRange;
objTextRng.Text = "first text";
objTextRng.Font.Name = "Calibri";
objTextRng.Font.Size = 20;

objTextRng = objSlide.Shapes[1].TextFrame.TextRange;
objTextRng.Text = "second text";
objTextRng.Font.Name = "Calibri";
objTextRng.Font.Size = 20;

当我尝试运行此代码时,它只会为我提供第二个文本范围的输出,即“第二个文本”。

如果我想在同一张幻灯片中显示两个文本,我需要做什么。

我也尝试使用不同的textrangetextframe,但我不能这样做。

【问题讨论】:

    标签: c# powerpoint


    【解决方案1】:

    您遇到了问题,因为您在两个代码块中访问相同的形状:

    objSlide.Shapes[1].TextFrame.TextRange;
    

    根据幻灯片中有多少个形状,您可能希望第一个块引用索引 0 或第二个块引用索引 2。无论哪种方式,两个块都应该引用不同的形状。

    【讨论】:

    • 我确实改变了形状的索引。但是当我运行程序时,它给了我错误 Shapes (unknown member) : Integer out of range。 2 不在 1 到 1 的有效范围内。
    • 那么你应该附加第一和第二段文本以使其适应相同的形状,而不是替换第一和第二块中的文本。
    • 我也尝试将它用于不同的布局,例如空白幻灯片。我在那里也面临同样的问题。
    • 我不能这样做,因为我必须在两个文本之间添加图表。我必须在顶部写文本,然后显示图表,在下面我需要写文本。
    • @Sahil - 然后我建议查找有关如何以编程方式创建新形状并将其添加到工作表的文档。
    【解决方案2】:

    作为 vb.net 代码:

    Dim n as Integer =2
    for i = 1 to 2 
            Dim Orientation As Microsoft.Office.Core.MsoTextOrientation =  Microsoft.Office.Core.MsoTextOrientation.msoTextOrientationHorizontal
            Dim STextLeft As Single = 100*i
            Dim STextWidth As Single = 100
            Dim STextHeight As Single = 100
            Dim STextTop As Single = 100*i
            Dim TargetShape = objslide.shapes.AddTextbox(Orientation, STextLeft, STextTop, STextWidth, STextHeight)
    
        TargetShape.textframe.textrange=i.tostring
        Orientation=nothing
        targetshape=nothing
    

    下一个

    这将创建两个文本形状。 请不要将方向和目标形状设置为空,仅仅因为 COM 很糟糕。如果不这样做,PowerPoint 将保持打开状态。 您可能需要致电

       GC.Collect()
       GC.WaitForPendingFinalizers()
       GC.Collect()
       GC.WaitForPendingFinalizers()
    

    在你的程序结束时也是如此。

    【讨论】:

      猜你喜欢
      • 2020-04-20
      • 2012-01-22
      • 2010-12-27
      • 2018-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多