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

本文关键字:另一个 设置 格式 一个 文档 Word | 更新日期: 2023-09-27 18:27:50

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

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

因为复制的文本保留在剪贴板上,所以我可以判断它在复制时有格式,但在粘贴时没有。

这是复制并粘贴它的代码:

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();

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

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

问题是,您声明的任何变量(在本例中为copiedText)都不能"携带"Word的格式化命令。使用"纯文本"的唯一方法是,如果它是有效的WordOpenXML,则需要InsertXML方法将其放入文档中。对于任何其他带有格式的东西,Word需要一个转换器。当您使用Paste方法、Open方法打开文件或InsertFile方法将文件插入文档对象时,Word会自动触发转换器。

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

我认为Word的粘贴方法应该有效。试试类似的东西:

newDoc.Content.Paste

或者,由于您使用了Activate:

Selection.Paste