【问题标题】:Adding a new line to word using FindAndReplace in C#在 C# 中使用 FindAndReplace 向单词添加新行
【发布时间】:2012-12-14 16:23:54
【问题描述】:

现在我正在将一些文本导出到 2010 Word 文档。除了新行,我一切正常。新行的字符是什么?我试过“\r\n”、“^p”和“\n”,没有任何效果。

我正在使用“FindAndReplace”方法将字符串替换为字符串。

换行符的目的是一些必需的格式。我的同事有一个文本所属的 6 行框。在该框中的第 1 行我有“”,我用数据库中的信息替换它。如果信息超过 1 行,他们不希望框变成 7 行。所以我想出了如何计算文本需要多少行,并将框重新调整为 1 行。因此,例如,如果我的字符串需要 2 行,我想在那之后放 4 个空行。

如果这是不可能的,我正在考虑放入那个盒子: <line1> <line2> <line3> and so on... 然后只需单独替换每一行。还有其他想法吗? 提前致谢。

【问题讨论】:

  • This link 可能有帮助,它使用 OpenXML 添加换行符。

标签: c# ms-word newline


【解决方案1】:

您可以使用^13 或(等效的)^l 找到每个换行符,并通过连接 ^13 将它们替换为您需要的任意数量的换行符。下面的“Suchen und Ersetzen”对话框是德语的“搜索和替换”。在 Word 2010 中测试。

例子:

这应该像使用 C# 的 COM 自动化一样工作。一个例子link如果你需要的话。

这是概念验证代码:

namespace StackWord
{
    using StackWord = Microsoft.Office.Interop.Word;

    internal class Program
    {
        private static void Main(string[] args)
        {
            var myWord = new StackWord.Application { Visible = true };
            var myDoc = myWord.Documents.Add();
            var myParagraph = myDoc.Paragraphs.Add();
            myParagraph.Range.Text = 
               "Example test one\rExample two\rExample three\r";

            foreach (StackWord.Range range in myWord.ActiveDocument.StoryRanges)
            {
                range.Find.Text = "\r";
                range.Find.Replacement.Text = "\r\r\r\r";
                range.Find.Wrap = StackWord.WdFindWrap.wdFindContinue;
                object replaceAll = StackWord.WdReplace.wdReplaceAll;
                if (range.Find.Execute(Replace: ref replaceAll))
                {
                    Console.WriteLine("Found and replaced.");
                }
            }
            Console.WriteLine("Press any key to close...");
            Console.ReadKey();
            myWord.Quit();

        }
    }
}

【讨论】:

  • 感谢您的意见。我没有机会尝试它,但它看起来会起作用。我会在星期一试试。
【解决方案2】:

您可以随时尝试使用:

Environment.NewLine

【讨论】:

  • Environment.NewLine 只是"\r\n"
  • 也许,取决于环境;)你不必担心正确的转义。
  • OP 明确表示这在他的 Word 上下文中不起作用
【解决方案3】:

您将文件字保存到字 97 - 2003(*.doc),您的“FindAndReplace”方法将起作用:D

【讨论】:

    猜你喜欢
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    • 2018-06-07
    • 2014-05-05
    • 1970-01-01
    相关资源
    最近更新 更多