我正在制作一个报表生成器,可以在word中生成报告的开头。然后让用户持续使用word完成报告。报表生成器从数据库获取RTF内容,并将其用作段落。对于每个RTF,文档内创建一个段落,并将RTF添加到其中。
我读到的资料似乎暗示着,如果要将rtf插入到Word文档中,则需要将其放入剪贴板,然后从剪贴板中粘贴到Word中。这样操作是可行的,但它实际上并不是按照我想要的方式将其放入段落中。当调用粘贴方法时,它并没有将RTF置于段落范围内,而是将其粘贴在段落开始的位置。它没有覆盖段落,仍然存在于我所粘贴的RTF块下方。将范围移动一位以适应段落标记并不能解决问题,它只会将其粘贴在段落下方。我认为它需要使用Insert()方法而不是Paste()方法,但我不知道如何这样做,也找不到任何关于如何进行此操作的信息。我可以正常地从构建块或插入纯文本中插入,但被插入的文本需要格式化,而且包含了不同用户创建的多种风格等。
复制到剪贴板和粘贴的代码如下:
但是我找不到如何在我的情况下实现这一点。
我想插入到段落中的原因是要编辑格式的某些方面,并确保诸如不要跨页换行等。
我当前用于创建和插入的代码如下:
我使用线条检查了段落的精确位置。
我读到的资料似乎暗示着,如果要将rtf插入到Word文档中,则需要将其放入剪贴板,然后从剪贴板中粘贴到Word中。这样操作是可行的,但它实际上并不是按照我想要的方式将其放入段落中。当调用粘贴方法时,它并没有将RTF置于段落范围内,而是将其粘贴在段落开始的位置。它没有覆盖段落,仍然存在于我所粘贴的RTF块下方。将范围移动一位以适应段落标记并不能解决问题,它只会将其粘贴在段落下方。我认为它需要使用Insert()方法而不是Paste()方法,但我不知道如何这样做,也找不到任何关于如何进行此操作的信息。我可以正常地从构建块或插入纯文本中插入,但被插入的文本需要格式化,而且包含了不同用户创建的多种风格等。
复制到剪贴板和粘贴的代码如下:
Clipboard.SetText(richTextBox1.Rtf, TextDataFormat.Rtf);
oPara[i].Range.Paste();
我知道您可以使用以下方法将构建块插入段落中,以保留段落格式:
tTemplate.BuildingBlockEntries.Item(foundList[i]).Insert(oPara[i].Range.FormattedText);
但是我找不到如何在我的情况下实现这一点。
我想插入到段落中的原因是要编辑格式的某些方面,并确保诸如不要跨页换行等。
我当前用于创建和插入的代码如下:
Word.Paragraph[] oPara = new Word.Paragraph[foundList.Count];
for (int i = 0; i < foundList.Count; i++)
{
oPara[i] = oDoc.Content.Paragraphs.Add();
Clipboard.SetText(foundList[i].Paragraph, TextDataFormat.Rtf);
oPara[i].Range.InsertParagraphAfter();
oPara[i].Range.Paste();
oPara[i].KeepTogether = -1;
oPara[i].Range.Font.Size = 10;
oPara[i].Range.Font.Name = "Arial";
}
我使用线条检查了段落的精确位置。
oPara[0].Range.Select(); //To see first paragraph
结果是rtf粘贴在段落开始的位置,而段落就在粘贴的rtf下面。 您如何将rtf按照我想要的方式插入到MS-Word的段落中?
编辑:调用折叠方法并不能实现我想要的效果。