我正在尝试使用C#用换行符(换行符)替换整个DOCX文件上的特定文本字符串.
我要搜索的文本字符串可以在文件的段落或表格中.
我目前正在使用下面的代码替换文本.
using (WordprocessingDocument doc = WordprocessingDocument.Open("yourdoc.docx", true))
{
var body = doc.MainDocumentPart.Document.Body;
foreach (var text in body.Descendants<Text>())
{
if (text.Text.Contains("##Text1##"))
{
text.Text = text.Text.Replace("##Text1##", Environment.NewLine);
}
}
}
问题:运行此代码时,输出DOCX文件的文本替换为空格(即“”)而不是换行符.
如何更改此代码以使其正常工作?
解决方法:
尝试使用break.检查此链接上的示例.您只需要附加一个Break
段落,智能标签,超链接都在Run中.所以也许您可以尝试使用approach.
要更改表中的文本,您将必须使用approach.再次,该文本始终位于“运行”中.
如果您说的是替换仅替换为空字符串,我会尝试这样做:
using (WordprocessingDocument doc =
WordprocessingDocument.Open(@"yourpath\testdocument.docx", true))
{
var body = doc.MainDocumentPart.Document.Body;
var paras = body.Elements<Paragraph>();
foreach (var para in paras)
{
foreach (var run in para.Elements<Run>())
{
foreach (var text in run.Elements<Text>())
{
if (text.Text.Contains("text-to-replace"))
{
text.Text = text.Text.Replace("text-to-replace", "");
run.AppendChild(new Break());
}
}
}
}
}