【问题标题】:Losing Formating when Pasting from one Word Document to another从一个 Word 文档粘贴到另一个文档时丢失格式
【发布时间】:2016-07-30 17:54:57
【问题描述】:

我有一个程序,它为每个勾选的框打开一个特定的 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();

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

【问题讨论】:

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


    【解决方案1】:

    问题是你声明的任何变量——在这种情况下是copyedText——不能“携带”Word 的格式化命令。您可以使用“纯文本”的唯一方法是,如果它是有效的 WordOpenXML,那么您需要 InsertXML 方法将其放入文档中。对于其他任何带有格式的 Word 都需要转换器。当您使用 Paste 方法、Open 方法打开文件或 InsertFile 方法将文件插入到文档对象中时,Word 会自动触发转换器。

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

    我认为 Word 的粘贴方法应该可以工作。尝试类似:

    newDoc.Content.Paste
    

    或者,既然你已经使用了激活:

    Selection.Paste
    

    【讨论】:

    • 解决了,objWord.Selection.Paste();替换最后两行。非常感谢
    • 欢迎您!因为您是 StackOverflow 的新手 :-) 请记住单击投票“0”下方的复选标记以标记“答案”。这将帮助遇到相同问题的其他人一目了然地认识到什么对您有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 2016-02-21
    • 1970-01-01
    相关资源
    最近更新 更多