【问题标题】:Get whole .docx text with office automation, including font and properties (as bold, italic...)使用办公自动化获取整个 .docx 文本,包括字体和属性(粗体、斜体...)
【发布时间】:2015-01-28 16:23:08
【问题描述】:

所以我正在尝试从 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 正文时,我只有 calibri 字体,没有粗体或斜体。

我想尝试的和我们手动做的一样:

打开word文档 选择所有文本然后复制 (ctrl + c) 在 Outlook 中创建邮件 将文本粘贴到邮件中(ctrl + v)。

这样完成后,再现性很好(字体系列,粗体等都很好),但是在代码中完成时,它只取文本。

查看这张图片的不同之处(下面的一个是编程制作的,一个底部是手动制作的):

我该如何解决这个问题(如果可能)?

编辑:在尤金的回答之后,我添加了这个:

                Microsoft.Office.Interop.Outlook.Inspector insp = oMsg.GetInspector;
                Microsoft.Office.Interop.Word.Document wordEditorDoc = insp.WordEditor;

但是,我不明白如何将文档文本放入我创建的单词编辑器对象中。我仍然可以发wordEditorDoc = doc;,但结果并不比以前好。

【问题讨论】:

    标签: c# outlook office-interop


    【解决方案1】:

    Body 属性包含原始文本。一种可能的方法是使用 HTMLBody 或 Word 编辑器。我认为最方便的方法是使用 Word 对象模型在文档(Word 现有文档和消息正文)之间复制内容。您可能知道 Outlook 使用 Word 作为 Outlook 中的电子邮件编辑器。因此,您可以使用 Word 对象模型在 Outlook 中格式化电子邮件。

    Inspector 类的WordEditor 属性返回表示消息正文的 Document 类的实例(来自 Word 对象模型)。

    您可以在 MSDN 中的 Chapter 17: Working with Item Bodies 文章中阅读有关可能方法的更多信息。

    【讨论】:

    • 我不明白如何制作 word 文档的真实副本,按照我想要的方式复制整个属性(粗体等)。当你有你的检查员和你的 word 编辑器时,你做什么工作?每次我检查 oMsg 的 HTMLBody 时,我从来没有得到粗体或斜体部分......
    • 您有机会查看我帖子中提到的文章吗?它提供了一个示例代码。无论如何,Outlook 不会将 UI 中所做的更改反映到其对象。如果您想查看更改,您需要保存该项目。
    猜你喜欢
    • 2011-07-18
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    • 2016-08-10
    • 2012-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多