首页 > 解决方案 > 使用 Range.PasteAndFormat c# 时粘贴项目的顺序

问题描述

我正在尝试使用以下代码使用 Word 自动化将文本粘贴到循环中。

Clipboard.SetData(System.Windows.DataFormats.Rtf, text);
if (!Clipboard.ContainsText())
    Thread.Sleep(500);

initialRange.PasteAndFormat(WdRecoveryType.wdFormatOriginalFormatting);
initialRange.Collapse(WdCollapseDirection.wdCollapseEnd);

我有一个我试图写的字符串集合:

这是第 1 行
这是第 2 行
这是第 3 行

我希望输出以相同的顺序打印,但是在使用上面的代码时,我以相反的顺序得到输出,即

这是第 3 行
这是第 2 行
这是第 1 行

知道我需要做什么来修复输出的顺序吗?

标签: c#ms-wordoffice-interop

解决方案


最后,我想出了解决办法。我不得不添加

“初始范围。移动结束();” PasteAndFormat 调用之前的行。

因此,最终代码看起来像

Clipboard.SetData(System.Windows.DataFormats.Rtf, text);
if (!Clipboard.ContainsData(DataFormats.Rtf))
    Thread.Sleep(500);

initialRange.MoveEnd();
initialRange.PasteAndFormat(WdRecoveryType.wdFormatOriginalFormatting);
initialRange.Collapse(WdCollapseDirection.wdCollapseEnd);

推荐阅读