如何插入段落和标题

时间:2012-08-16 01:49:36

标签: c# office-interop

我正在尝试将带有标题和一些文本的段落插入到word文档中。

一切正常除了,当我应用标题样式时,它会更改以下文本的样式,或者,当我将段落主体更改回“Normal”时,它会将标题更改回纯文本。我无法用言语将它们视为单独的段落,显然我做了一些非常错误的事情,但我看不出是什么。 附上实际代码: -

Word.Paragraph p2 = wD.Paragraphs.Add(R.End);
Word.Range r2 = p2.Range;
r2.InsertAfter("If any updates were made then link to  the follow on program "
        + curTarget.followOn + ".\n");
string style = "Normal";
object objStyle = style;
r2.set_Style(ref objStyle);
r2.InsertParagraphAfter();
Word.Paragraph p3 = wD.Paragraphs.Add(r2);
Word.Range r3 = p3.Range;
r3.Text = "Call follow on process.\n";
style = "Heading 4";
objStyle = style;
r3.set_Style(ref objStyle);
r2.InsertParagraphAfter();

为凌乱的代码道歉,但它已被重复(de) - 约20次。

1 个答案:

答案 0 :(得分:3)

正如我在评论中提到的,你的一些代码looks suspiciously like J#而不是C#。不知道多少会导致混乱。

我注意到Word.Range.set_Style正在采用ref参数。我注意到你传入的引用是同一个变量,你在调用set_Style之间重新分配:

string style = "Normal";
object objStyle = style;
r2.set_Style(ref objStyle);
...
style = "Heading 4";
objStyle = style;
r3.set_Style(ref objStyle);

相反,请尝试为第二种样式重新声明一个新变量:

string style = "Normal";
object objStyle = style;
r2.set_Style(ref objStyle);
...
string style2 = "Heading 4";
object objStyle2 = style2;
r3.set_Style(ref objStyle2);

老实说,这是一个疯狂的猜测 - ref的使用和重新分配在这里并不重要,at least in C#,但是当我查看你的代码时它确实会引发一个标志。 / p>

如果代码实际上是J#,则ref的使用可能会导致导致您出现问题的替代行为 - 我无法找到足够的J#文档来证明或反驳这一理论。

相关问题