0

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

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

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

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

4

3 回答 3

3

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

例子:

搜索和替换

这应该像使用带有 c# 的 COM 自动化一样工作。如果您需要,请提供示例链接。

这是概念验证代码:

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();

        }
    }
}
于 2012-12-14T17:25:56.493 回答
2

您可以随时尝试使用:

Environment.NewLine
于 2012-12-14T16:26:03.910 回答
0

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

于 2018-01-23T04:20:48.687 回答