Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Docx内容替换_C#_Replace_Openxml_Docx - Fatal编程技术网

C# Docx内容替换

C# Docx内容替换,c#,replace,openxml,docx,C#,Replace,Openxml,Docx,这将用代码中的名称替换doctext上的匹配项。我检查了doctext,要替换的单词(@@username@)被拆分。有时,两个数据库之间存在XML内容 @和用户名@。有时这个词本身的格式是不正确的 如何替换@@username@?一个简单的解决方法是将标记放在文本框或表格中(甚至可能带有预先指定的id)。我不确定文档中是否有其他表或文本框,但抓取表中的内容或文档中唯一一个表中的文本框非常容易。一个简单的解决方法是将标签放在文本框或表中(甚至可能带有预先指定的id)。我不确定文档中是否有其他表格

这将用代码中的名称替换doctext上的匹配项。我检查了doctext,要替换的单词(
@@username@
)被拆分。有时,两个数据库之间存在XML内容
@
用户名@
。有时这个词本身的格式是不正确的


如何替换
@@username@

一个简单的解决方法是将标记放在文本框或表格中(甚至可能带有预先指定的id)。我不确定文档中是否有其他表或文本框,但抓取表中的内容或文档中唯一一个表中的文本框非常容易。

一个简单的解决方法是将标签放在文本框或表中(甚至可能带有预先指定的id)。我不确定文档中是否有其他表格或文本框,但获取表格中的内容或文档中唯一表格或文本框中的文本框非常容易。

如果段落对象中有代码,则可以执行类似操作(顺序不佳的n^2解决方案……):

foreach(wordprocessingDocument.MainDocumentPart.Document.Descents()中的段落段落)
{
foreach(在para.Elements()中运行r)
{
if(r.Elements().ElementAt(0.Text.Equals)(字符串搜索))
r、 Elements().ElementAt(0).Text=string\u to\u insert;
}
}

此外,请查看MSDN

如果段落对象中有代码,则可以执行类似操作(顺序不正确的n^2解决方案……):

foreach(wordprocessingDocument.MainDocumentPart.Document.Descents()中的段落段落)
{
foreach(在para.Elements()中运行r)
{
if(r.Elements().ElementAt(0.Text.Equals)(字符串搜索))
r、 Elements().ElementAt(0).Text=string\u to\u insert;
}
}

另外,请查看MSDN,您只需更改正则表达式即可。(这将包括所有XML,但它将被替换)

ops代码是MSDN上记录的解决方案:

如果要用不同的名称替换多个字段,可以尝试在读写器之间调用此函数:

New Regex("@@.*?username.*?@@")

你可以改变正则表达式。(这将包括所有XML,但它将被替换)

ops代码是MSDN上记录的解决方案:

如果要用不同的名称替换多个字段,可以尝试在读写器之间调用此函数:

New Regex("@@.*?username.*?@@")

为什么不使用文字处理合并功能来提供包含内容的字段,而不是误用regex?作为一名DOCX文件格式专家,我真的怀疑您是否可以对DOCX文件的内容使用字符串函数。我建议使用Aspose.Words或.为什么不使用文字处理合并功能来提供包含内容的字段,而不是误用regex?作为一名DOCX文件格式专家,我真的怀疑您是否可以对DOCX文件的内容使用字符串函数。我建议使用Aspose。单词或。
New Regex("@@.*?username.*?@@")
    Private Function ReplaceMatches(ByVal text As String) As String
        Dim Matches = Regex.Matches(text, "@@.*?@@")
        For Each m As Match In Matches
            For Each c As Capture In m.Captures
                If Not String.IsNullOrEmpty(c.Value) Then
                    text = text.Replace(c.Value, "NEW-VALUE")
                End If
            Next
        Next
        Return text
    End Function