【问题标题】:copy excel range to outlook mail body in C#在 C# 中将 excel 范围复制到 Outlook 邮件正文
【发布时间】:2022-08-13 01:39:35
【问题描述】:
Static void Main(string[] args)
{
    EXCEL.Application aap = new EXCEL.Application();
    string filelocation = \"C:\\\\AdventureWorks_Sales.xlsx\";
    Workbook wrkbok = aap.Workbooks.Open(filelocation);
    Worksheet sheet1 = wrkbok.ActiveSheet;
    Range rng= sheet1.Range[\"A1\",\"G10\"];
           

    Outlook.Application outlookapp = new Outlook.Application();
    Outlook.NameSpace nameSpace = outlookapp.GetNamespace(\"MAPI\");
    nameSpace.Logon(\"\", \"\",Missing.Value,Missing.Value);

    Outlook.MailItem mail = (Outlook.MailItem)outlookapp.CreateItem(Outlook.OlItemType.olMailItem);

    mail.Body = rng.PasteSpecial();
    mail.To=(\"ddd@gmail.com\");
    mail.Send();         
}

如何将 Excel 范围粘贴到电子邮件正文。由于电子邮件正文是字符串,以下不起作用

mail.Body = rng.PasteSpecial();

标签: c# outlook office-interop excel-interop office-automation


【解决方案1】:

而不是使用纯文本 Body 属性:

mail.Body = rng.PasteSpecial();

您可以使用两种主要方法来构建基于 Excel 数据的消息正文。第一种方法基于代表 HTML 文档的 HTMLBody 属性。在这种情况下,您有责任根据需要粘贴的 Excel 数据构建 HTML 文档结构。请参阅Paste Excel range to Outlook email body 了解更多信息。

但最简单的解决方案是使用 Word 对象模型。 WordEditor 属性返回正在显示的消息的 Microsoft Word 文档对象模型。因此,您可以直接将所有必要的数据粘贴到文档中。请参阅Selection.Paste 方法,该方法将剪贴板的内容插入指定的选择。使用此方法替换当前选择的内容。如果您不想替换选择的内容,请在使用此方法之前使用Collapse 方法。当您将此方法与Range 对象一起使用时,范围会扩展为包含Clipboard 的内容。当您将此方法与Selection 对象一起使用时,选择不会扩展到包括Clipboard 内容;相反,选择位于粘贴的Clipboard 内容之后。

【讨论】:

  • 感谢您的帮助。我可以使用 HTMLBody。但使用 WordEditor 具有挑战性。所以如果你能提供代码示例会很有帮助。
  • 你能提供一些代码吗?这对我很有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-27
  • 2018-05-04
  • 2012-12-04
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
相关资源
最近更新 更多