从Powerpoint中提取项目符号文本

时间:2015-07-08 12:44:54

标签: c# office-interop powerpoint-vba

我正在尝试从powerpoint幻灯片中提取项目符号文本。但我找不到任何有用的功能,可以提供有关当前行是否在子弹列表中的信息。我尝试使用缩进级别来识别它,但我发现它也没用。

例如:

如果幻灯片包含如下文字:

Abcdefg...
. B
. C
  . D
     .E

在这里,有5个段落,如果得到每个段落的缩进级别,它将变为:

Paragraph   IndentLevel
Abcdefg...   1
B            1
C            1
D            2
E            3

这里,前三段有相同的缩进级别,但只有B和C在项目符号列表中,所以我的程序应该是B,c,D,E。

在这里,我没有办法弄清楚这个段落是否以子弹开头。

你能帮忙吗?

谢谢, 凯拉斯

编辑:

我用于检索文本的代码

public void analyzeText( PowerPoint.Shape shape )
{
    if( shape.HasTextFrame == Office.MsoTriState.msoTrue && shape.TextFrame.HasText == Office.MsoTriState.msoTrue )
    {
        PowerPoint.TextRange textRange = shape.TextFrame.TextRange;
        string text = textRange.Text;
        MessageBox.Show(text);
        for( int i=1; i<=textRange.Paragraphs().Count; i++)
        {
            MessageBox.Show("Paragram COunt : " + textRange.Paragraphs(i).Text + " Indent " + textRange.Paragraphs(i).IndentLevel);
        }
    }
}

2 个答案:

答案 0 :(得分:1)

您可以使用此方法确定段落是否带项目符号:

blnBullet = oShp.TextFrame.TextRange.Paragraphs(x).ParagraphFormat.Bullet

答案 1 :(得分:0)

感谢JamieG帮忙。你的回答给了我一些暗示。以下是我能够解决这个问题的方法:

 PowerPoint.BulletFormat bulletFormat = textRange.Paragraphs(x).ParagraphFormat.Bullet;

    if( bulletFormat.Type == PowerPoint.PpBulletType.ppBulletNone )
                           // Not Bulleted
    else
                        // Bulleted