所以我试着从一个word文档中选择文本,其中包含文本的斜体,粗体,有特定的字体系列。
因此,我找到了选择所有文本的代码:
//doc is the opened document with office automation, this part works
string text = doc.Content.Text;
int end = text.Length;
Microsoft.Office.Interop.Word.Range range = doc.Range(Start: 0, End: end);
range.Select();然后使用它,将文本复制到Outlook消息中:
Microsoft.Office.Interop.Outlook.Application outlook = new Microsoft.Office.Interop.Outlook.Application();
Microsoft.Office.Interop.Outlook.MailItem oMsg = (Microsoft.Office.Interop.Outlook.MailItem)outlook.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
oMsg.BodyFormat = Microsoft.Office.Interop.Outlook.OlBodyFormat.olFormatHTML;
oMsg.Body = range.Text ;然后,当我看到消息html正文时,我只使用杯状字体,没有粗体或斜体。
我想尝试的是,当我们手动做它的时候,我们得到了同样的东西:
打开word文档,选择所有文本,然后复制(ctrl + c),在outlook中创建一个邮件,粘贴邮件中的文本(ctrl + v)。
当它这样做,它是很好的再现(字体系列,粗体等是很好的),但当它是在代码中,它只接受文本。
请参阅这张图中的不同之处(下面的一个是以编程方式制作的,一个底部是手动的):

我如何解决这个问题(如果可能的话)?
编辑:在Eugene的回答之后,我添加如下:
Microsoft.Office.Interop.Outlook.Inspector insp = oMsg.GetInspector;
Microsoft.Office.Interop.Word.Document wordEditorDoc = insp.WordEditor;但是,我不知道如何将文档文本放入我创建的word Editor对象中。我仍然可以做一个wordEditorDoc = doc;,但结果并不比以前好。
发布于 2015-01-27 17:39:39
Body属性包含一个原始文本。一种可能的方法是使用HTMLBody或Word编辑器。我认为最方便的方法是使用Word对象模型在文档(现有文档和消息体)之间复制内容。正如您可能知道的,Outlook在Outlook中使用Word作为电子邮件编辑器。因此,您可以使用Word对象模型来格式化Outlook中的电子邮件。
检查器类的WordEditor属性返回文档类的一个实例(来自Word对象模型),该实例表示消息体。
您可以在MSDN中的第17章:与项目机构合作文章中阅读更多关于可能方法的信息。
https://stackoverflow.com/questions/28174886
复制相似问题