0

我打开了一个由 word2010 编辑的 docx,在这个文档中,我有一些使用组的形状。但是当我得到子形状时,我无法得到子形状文本。这是我的代码。有人能告诉我为什么吗?谢谢。

Word.Application woradApp = new Word.Application();
            Word.Document doc = woradApp.Documents.Open(@"D:\ABC\a.docx");
            Word.Shapes Shapes =doc.Shapes;
            List<Word.Shape> list = Shapes.Cast<Word.Shape>().ToList<Word.Shape>();
            foreach (Word.Shape shape in list)
            {
                if (shape.Type == MsoShapeType.msoGroup)
                {
                    Word.GroupShapes dyShapes = shape.GroupItems;                  
                    foreach (dynamic item in dyShapes)
                    {
                        var range = item.TextFrame2.TextRange;
                    }
                }
            }    

“item.TextFrame2.TextRange.Text”代码给出了一个异常,因为“TextRange”为空,这应该有文本,在哪里可以得到文本?

4

1 回答 1

0

请展示你的什么是var range,它是一个Range对象还是TextRange对象?我假设它只是一个variant array.

以下是一些尝试的步骤:

  1. 确保每个形状都支持TextFrame2属性
  2. Ungroupshapes一个
  3. 像您这样做一样循环遍历形状以检查所需的值
  4. 确保处理nullif TextRangehas no value ...在您的情况下,这很可能是罪魁祸首。
  5. 对形状进行分组。

    foreach(dyShapes 中的动态项目){ if not IsNull(item.TextFrame2.TextRange.Characters.Text) { var range = item.TextFrame2.TextRange.Characters.Text; } }

Null首先,您可以通过处理当前代码来尝试。如果失败,请尝试该ungrouping建议。

于 2013-01-06T11:47:14.800 回答