从一个Word文档粘贴到另一个Word文档时丢失格式

时间:2015-12-23 17:16:26

标签: c# .net visual-studio ms-word office-interop

我有一个程序,对于每个打勾的框,它会打开一个单词doc,复制文本并将其粘贴到新文档的末尾。

问题是粘贴的文本缺少格式化。

因为复制的文本保留在剪贴板上,我可以告诉它在复制时有格式化,但粘贴后它没有。

以下是复制和粘贴它的代码:

foreach (ListViewItem item in checkedItems)
{
    //open documents here
    path = item.SubItems[1].Text;
    objWord.Documents.Open(path);

    //copy document text here
    objWord.ActiveWindow.Selection.WholeStory();
    objWord.ActiveWindow.Selection.Copy();

    //close document here
    objWord.ActiveDocument.Close();

    //paste to end of new document here
    newDoc.Activate();
    copiedText = Clipboard.GetText();
    newDoc.Content.InsertAfter(copiedText);
}

我尝试过改变:

copiedText = Clipboard.GetText();

copiedText = Clipboard.GetText(TextDataFormat.Rtf);

copiedText = Clipboard.GetText(TextDataFormat.Rtf).toString();

两者都没有达到预期的效果。 我进入了单词选项,并确保所有粘贴选项都设置为保持源格式化。

1 个答案:

答案 0 :(得分:0)

问题在于,您声明的任何变量 - 在这种情况下为copiedText - 都可以&#t;#34;携带" Word的格式化命令。唯一可以使用"纯文本"如果它是有效的WordOpenXML,那么您需要使用InsertXML方法将其放入文档中。对于任何其他带有格式的Word需要一个转换器。当您使用Paste方法,Open方法打开文件或WordFile方法将文件插入文档对象时,Word会自动触发转换器。

通常,我使用FormattedText属性将格式化内容从一个文档传送到另一个文档。但是在某些特殊情况下,它不会带有所需的内容(例如页眉,页脚,边距)。然后你需要复制/粘贴。

我认为Word的粘贴方法应该有用。尝试类似:

newDoc.Content.Paste

或者,因为您使用过Activate:

Selection.Paste