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」がnullであるため、これにはテキストが必要ですが、どこでテキストを取得できますか?

4

1 に答える 1

0

が何であるかを示してください。var rangeそれはオブジェクトですか、RangeそれともTextRangeオブジェクトですか? 私はそれがただだと思いvariant arrayます。

試してみる手順は次のとおりです。

  1. TextFrame2各形状がプロパティをサポートしていることを確認してください
  2. Ungroupshapes最初の
  3. 目的の値を確認するために行ったように、形状をループします
  4. null値がない場合は必ず処理してくださいTextRange...これがあなたの場合の最も可能性の高い原因です。
  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 に答える