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