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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...