从一个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();
两者都没有达到预期效果。我进入单词选项,并确保所有粘贴选项都设置为保持源格式。
问题是,您声明的任何变量(在本例中为copiedText)都不能"携带"Word的格式化命令。使用"纯文本"的唯一方法是,如果它是有效的WordOpenXML,则需要InsertXML方法将其放入文档中。对于任何其他带有格式的东西,Word需要一个转换器。当您使用Paste方法、Open方法打开文件或InsertFile方法将文件插入文档对象时,Word会自动触发转换器。
通常,我会使用FormattedText属性将格式化的内容从一个文档传送到另一个文档。但在特殊情况下,它不包含所需的内容(如页眉、页脚、页边距)。然后你确实需要复制/粘贴。
我认为Word的粘贴方法应该有效。试试类似的东西:
newDoc.Content.Paste
或者,由于您使用了Activate:
Selection.Paste