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または (同等のもの)を使用して改行の各インスタンスを検索し、^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 に答える