我需要在.docx文件中保留换行符,但要摆脱换行符,当从一个文件复制到另一个文件时,换行符通常位于错误的位置(由于页面大小不同,并且更改了字体)。
使用DocX库,我正在尝试这样做:
private void ReplaceLineBreaksWithBoo(string filename)
{
List<string> lineBreaks;
using (DocX document = DocX.Load(filename))
{
lineBreaks = document.FindUniqueByPattern("\n", System.Text.RegularExpressions.RegexOptions.None);
if (lineBreaks.Count > 0)
{
foreach (string s in lineBreaks)
{
document.ReplaceText(s, string.empty); // <-- or a space?
}
}
document.Save();
}
}
...但是它不起作用-我认为“ \ n”不是正确的选择;我不知道FindUniqueByPattern()方法的第一个参数需要什么。文档为零,那里的讨论论坛类似于加利福尼亚的博迪:
我猜您无法使用FindUniqueByPattern
或来做到这一点FindAll
。换行符不以任何符号表示,而是存储为带有空文本的段落。您可以从document.Xml
属性中以xml格式查看文档表示形式,在那里您将看到空行存储为单个<w:p>
元素。
因此,您可以搜索带有空文本的段落,而不是搜索换行符:
using (DocX document = DocX.Load(filename))
{
var emptyLines = document.Paragraphs.Where(o => string.IsNullOrEmpty(o.Text));
foreach (var paragraph in emptyLines)
{
paragraph.Remove(false);
}
document.Save();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句