如何解决Openxml在书签处插入斜体字符串中的几个字符为斜体
这是我工作的代码。
public void InsertValue(WordprocessingDocument doc,string bookMark,string txt)
{
try
{
RemoveBookMarkContent(doc,bookMark);
var bmStart = FindBookMarkStart(doc,bookMark);
if (bmStart == null)
return;
var run = new Run();
run.Append(GetRunProperties());
run.Append(new Text(txt));
bmStart.Parent.InsertAfter(run,bmStart);
}
catch (Exception c)
{
//not Exception
}
}
private void RemoveBookMarkContent(WordprocessingDocument doc,string bmName)
{
BookmarkStart bmStart = FindBookMarkStart(doc,bmName);
if (bmStart == null)
return;
BookmarkEnd bmEnd = FindBookMarkEnd(doc,bmStart.Id);
while (true)
{
var run = bmStart.NextSibling();
if (run == null)
{
break;
}
if (run is BookmarkEnd && (BookmarkEnd)run == bmEnd)
{
break;
}
run.Remove();
}
}
仍然有几个未编写的辅助类。工作过程中,首先找到书签位置,删除书签位置的内容,然后添加它。我还尝试将一个段落添加到书签位置。不起作用。 要插入书签的文档,例如:露点: U = 0.15℃( k = 2);相对湿度: U = 1.0%RH( k = 2)。u和K都必须是斜体。将不胜感激。
解决方法
我尝试了一个新组件。[Spire.Office。] [1] 开始时,我没有想到解决方案,但是我使用全局搜索和替换来确定搜索位置是否具有书签,从而完美地解决了该问题。 这是我的工作代码。
var selection = document.FindAllString("U",false,true);
foreach (var sec in selection)
{
var t = sec.GetAsOneRange();
if (sec.GetAsOneRange()?.Owner?.LastChild?.DocumentObjectType == DocumentObjectType.BookmarkEnd)
{
sec.GetAsOneRange().CharacterFormat.Italic = true;
}
}
我没有尝试使用openxml来做到这一点,但是我认为原理应该是一致的。 [1]:https://www.e-iceblue.cn/Buy/Spire-PDF-NET.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。