我试图在段落上使用wordprocessing InsertAt
方法,但是当我使用此方法时,我的段落样式始终设置为null。我发现我使用的索引0表示ParagraphProperties,Run表示索引1.但是,当没有设置段落属性时,Paragraph唯一的子元素是Run
是否有一致的方法来查找运行的索引?或者它总是在0或1?
上下文的代码段
var run = new W.Run() { RunProperties = new W.RunProperties() { NoProof = new W.NoProof() } };
run.AppendChild(dr);
para.InsertAt(run, 0);
显然我可以做Math.Min(1, para.Count - 1)
之类的事情,但我不确定是否可以在段落中添加任何其他元素,并且Run元素最终成为中间元素
答案 0 :(得分:1)
段落可以包含多个运行。例如:
<w:p xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:r>
<w:t>Some text</w:t>
</w:r>
<w:r>
<w:rPr>
<w:noProof />
</w:rPr>
<w:t>Other text</w:t>
</w:r>
<w:r>
<w:t>Last text in paragraph</w:t>
</w:r>
</w:p>
所以问题的答案实际上取决于你想要完成的事情。根据您的回答,您似乎想要在Run
中已有的投放之前添加新的Paragraph
。
Paragraph
类有一些有用的方法,如InsertBefore
,InsertAfter
等,fx:
Paragraph p = ...
Run r = new Run(...);
p.InsertBefore(r, p.GetFirstChild<Run>());
这将使r成为段落中的第一个Run
- 假设段落中已有Run
。
您可以尝试查看内部&#39;一些使用OpenXML Productivity Tool的单词文档。
答案 1 :(得分:0)
我已经完成了“长期”的工作。现在的方式,如果有一个更清洁的解决方案我全都听了......
asyncOne() async {
print("asyncOne start");
await Future.wait([1, 2, 3].map(asyncTwo));
print("asyncOne end");
}