我打开一个docx,这是由word2010编辑的,在这个doc中,我有一些使用group的形状。但是当我得到子形状时,我无法获得子形文本。 这是我的代码。有人告诉我为什么?感谢。
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,这应该有文本,哪里可以得到文本?
答案 0 :(得分:0)
请显示var range
是什么,是Range
对象还是TextRange
对象?我认为它只是一个variant array
。
以下是一些尝试的步骤:
TextFrame2
属性Ungroup
shapes
第一null
没有价值,请务必处理TextRange
...这是您案件中最有可能的罪魁祸首。 将形状分组。
foreach(dyShapes中的动态项) { 如果不是IsNull(item.TextFrame2.TextRange.Characters.Text) { var range = item.TextFrame2.TextRange.Characters.Text; } }
首先,您可以在当前代码中处理Null
。如果失败,请尝试ungrouping
建议。