4

我需要在 .docx 文件中保留分节符,但是在从一个文件复制到另一个文件时(由于不同的页面大小以及更改字体时),摆脱了通常位于错误位置的换行符。

使用DocX Library,我正在尝试这个:

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() 方法的第一个参数需要什么。文档为零,那里的讨论论坛类似于加利福尼亚州的博迪:

在此处输入图像描述

4

1 回答 1

4

我猜你不能使用FindUniqueByPatternor来做到这一点FindAll。换行符不由任何符号表示,而是存储为带有空文本的段落。您可以从属性中查看 xml 格式的文档表示,在document.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();
}
于 2014-01-04T01:03:52.250 回答