如何使用Open XML SDK替换括号中的每个单词

时间:2019-06-18 12:48:37

标签: c# xml .net-core ms-word openxml-sdk

我正在尝试替换用括号括起来的Microsoft Word文档中的每个单词。由于某些原因,XML运行有时会有所不同。

这意味着有时实际上会将带括号的整个单词带入循环,但有时可能仅带第一个括号,有时可能将第一个括号带入单词,但不带第二个括号。

>

这导致某些单词永远不会被替换。

我尝试在stackoverflow上使用先前线程的解决方案,但没有结果。 我还尝试检测方括号何时拆分,但这没有用,因为它也可以将单词随机拆分到任何地方。

例如,我尝试了该线程的解决方案,没有其他任何结果:Replace Text in Word document using Open Xml

public IActionResult Get([FromBody] dynamic value)
    {
        JObject attributesAsJObject = value;
        Dictionary<string, object> values = attributesAsJObject.ToObject<Dictionary<string, object>>();
        string path = Directory.GetCurrentDirectory() + "/test.docx";

        // Open a WordprocessingDocument for editing using the filepath.
        using (WordprocessingDocument doc =
                WordprocessingDocument.Open(path, true))
        {
            var body = doc.MainDocumentPart.Document.Body;

            foreach (var text in body.Descendants<Text>())
            {
                foreach (dynamic key in values)
                {
                    string thekey = "{{" + key.Key + "}}".ToString();
                    if (text.Text.Contains(thekey))
                    {
                        text.Text = text.Text.Replace(thekey, key.Value);
                    }
                }


            }
        }
        return Ok();
    } 

使用这种解决方案,我希望foreach循环中的“文本”变量始终是完整的单词,但仍会随机拆分。

0 个答案:

没有答案