1

我正在开发一个创建 Word 文档的 .Net 控制台应用程序。
我的 Visual Studio 项目引用了 Microsoft.Office.Interop.Word 程序集。

我想创建一个表格单元格。
我想在单元格中写两行文本。
第一行必须是粗体。

这是我的代码:

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 文档,当您插入段落时,范围会扩展以包含新段落。

然后,当您折叠已经包含新段落的范围时,您会将范围的开始和结束位置移动到结束段落标记之后。MSDN 关于 Range.Collapse 的文章特别提到了这种效果以及如何修复它。

简而言之,您需要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 回答