【发布时间】:2016-03-11 05:11:28
【问题描述】:
我将所有内容从 OpenXml 字文件复制到另一个 OpenXml 字文件。 但是在复制过程中,我想根据样式进行一些更改。 例如,如果某个段落内的文本是红色的,我会将其更改为蓝色。
如何获取特定段落的样式?
我使用此代码来遍历所有段落并复制到其他文件:
byte[] docByteArray = File.ReadAllBytes(HttpContext.Current.Server.MapPath("\\")
+ "\\from.docx");
using (MemoryStream memoryStream = new MemoryStream())
{
memoryStream.Write(docByteArray, 0, docByteArray.Length);
using (WordprocessingDocument doc =
WordprocessingDocument.Open(memoryStream, true))
{
RevisionAccepter.AcceptRevisions(doc);
XElement root = doc.MainDocumentPart.GetXDocument().Root;
XElement body = root.LogicalChildrenContent().First();
foreach (XElement blockLevelContentElement in body.LogicalChildrenContent())
{
if (blockLevelContentElement.Name == W.p)
{
var text = blockLevelContentElement
.LogicalChildrenContent()
.Where(e => e.Name == W.r)
.LogicalChildrenContent()
.Where(e => e.Name == W.t)
.Select(t => (string)t)
.StringConcatenate();
//addToOtherDocCode().....
}
}
}
}
所以当我确定元素是段落时,我可以循环里面的所有运行,但我怎样才能获得它的样式(颜色、粗体、斜体、大小......)?
【问题讨论】:
标签: c# .net ms-word openxml xelement