1

Word ドキュメントを作成する .Net コンソール アプリケーションを開発しています。
私の Visual Studio プロジェクトには、Microsoft.Office.Interop.Word アセンブリへの参照があります。

表セルを作成したい。
セルに 2 行のテキストを書き込みたい。
最初の行は太字にする必要があります。

これが私のコードです:

l_table = l_range.Tables.Add(l_range, 1, 1);
l_table.Borders.Enable = 0;
l_table.Rows.AllowBreakAcrossPages = 0;

l_cellRange = l_table.Cell(1, 1).Range;
l_cellRange.Text = "First Line";
l_cellRange.Bold = 1;

l_cellRange.InsertParagraphAfter();
l_cellRange.Collapse(WdCollapseDirection.wdCollapseEnd);
l_cellRange.Text = "Second Line";
l_cellRange.Bold = 1;

次のコード行では例外が発生します。l_cellRange.Text = "Second Line";
例外メッセージ (フランス語から英語への翻訳) : 行末の無効なアクション

誰かが私のコードの何が問題なのか説明できますか?

4

1 に答える 1

3

への電話がありませんRange.MoveEnd()

Range.InsertParagraphAfterに関する MSDN ドキュメントによると、段落を挿入すると、新しい段落が含まれるように Range が拡張されます。

次に、新しい段落が既に含まれている範囲を折りたたむと、範囲の開始位置と終了位置が終了段落記号の後に移動します。Range.Collapse に関する MSDN の記事では、この影響とその修正方法について具体的に言及しています。

MoveEnd()つまり、への呼び出しの後に挿入する必要がありCollapse()ます。

l_cellRange.Collapse(WdCollapseDirection.wdCollapseEnd);
l_cellRange.MoveEnd(WdUnits.wdCharacter, -1);
l_cellRange.Text = "Second Line";

これにより、範囲の開始位置と終了位置が終了段落記号の直前に移動し、期待どおりにテキストを挿入できるようになります。

そうは言っても、kape123に同意します。XML を介してドキュメントを生成することは、より持続可能な方法です。

于 2013-03-02T01:29:22.340 に答える