C# 如何将DataGrid数据导出到Outlook

C# 如何将DataGrid数据导出到Outlook,c#,wpf,wcf,datagrid,outlook,C#,Wpf,Wcf,Datagrid,Outlook,我的目标:我想添加添加到数据网格中的某些项目/行,以便在创建新电子邮件后显示在Outlook的HTMLBody中 我的问题:我不知道从哪里开始,如何才能实现我的目标。因此,我想从任何愿意提供建议的人那里得到一些建议和想法 下面是一些(我认为)对我有帮助的基本编码 我可以从我的WCF服务将我想要的项目插入到我的datagrid中 private async void btnSupplierAddItem_Click(object sender, RoutedEventArgs e) {

我的目标:我想添加添加到数据网格中的某些项目/行,以便在创建新电子邮件后显示在Outlook的
HTMLBody

我的问题:我不知道从哪里开始,如何才能实现我的目标。因此,我想从任何愿意提供建议的人那里得到一些建议和想法

下面是一些(我认为)对我有帮助的基本编码

  • 我可以从我的WCF服务将我想要的项目插入到我的datagrid中

    private async void btnSupplierAddItem_Click(object sender, RoutedEventArgs e)
    {
        using (MKCServiceClient service = new MKCServiceClient())
        {
            var selectedId = (lbxSupplierSearchItems.SelectedItem as ViewQuoteList).Id;
    
        QuoteItemList qd = new QuoteItemList()
        {
            Id = selectedId,
        };
    
        var items = await service.GetListOfQuoteItemsAsync(qd);
        foreach (var item in items)
            dgSupplier.Items.Add(new ViewQuoteItemList
            {
                CustomerRFQ = item.CustomerRFQ,
                Item = item.Item,
                Material = item.Material,
                Description = item.Description,
                AdditionalInformation = item.AdditionalInformation,
                Quantity = item.Quantity
            });
    }
    
    无需查看我的WCF编码,因为一切正常

  • 我使用Microsoft Outlook互操作引用和创建邮件项目的方法

    private void SendRFQRequest()
    {
        OutlookApp outlookApp = new OutlookApp();
        Outlook.MailItem mailItem = outlookApp.CreateItem(Outlook.OlItemType.olMailItem);
    
        mailItem.Recipients.Add(lblSupplierEmailAddress.Content.ToString());
        mailItem.Subject = "Quote Request";
    
        mailItem.HTMLBody = "<html><body>Test Body</body></html>";
    
        mailItem.Importance = Outlook.OlImportance.olImportanceHigh;
    
        mailItem.Display(false);
    }
    
    //Where I call my SendRFQRequest method
    private void btnSupplierSend_Click(object sender, RoutedEventArgs e)
    {
        SendRFQRequest();
    }
    
    private void SendRFQRequest()
    {
    OutlookApp OutlookApp=新建OutlookApp();
    Outlook.MailItem-MailItem=outlookApp.CreateItem(Outlook.OlItemType.olMailItem);
    mailItem.Recipients.Add(lblSupplierEmailAddress.Content.ToString());
    mailItem.Subject=“报价请求”;
    mailItem.HTMLBody=“测试主体”;
    mailItem.Importance=Outlook.OlImportance.olImportanceHigh;
    mailItem.Display(false);
    }
    //在这里,我调用SendRFQRequest方法
    私有void b保险人发送点击(对象发送者,路由目标e)
    {
    SendRFQRequest();
    }
    
  • 我的推荐人

    使用OutlookApp=Microsoft.Office.Interop.Outlook.Application

    使用Outlook=Microsoft.Office.Interop.Outlook


既然您已经看到了我的编码和我到目前为止所做的工作,那么您认为实现我的目标的最佳方式是什么

如果我理解正确,并且您只想将DataGrid转换为html,那么这可能会有所帮助:


其思想是迭代DataGrid列和行,并将它们转换为html
标记(或者选择您最喜欢的实现表的方式)。然后你可以参数化你的
SendRFQRequest
比如
SendRFQRequest(字符串内容)
,并将它设置到你的html正文中。

“无需查看我的WCF编码,因为一切都很好”-那么为什么要用WCF标记这个问题?如果我在代码中使用它,为什么不在这里添加标记?如果你对我的问题没有任何建设性的意见,为什么要发表这样一个无用的评论?评论是为了要求澄清——在问题上加上不属于问题一部分的标签(对我来说)是没有意义的,既然你说WCF工作得很好,那显然不是问题的一部分。我不认为这是没有建设性的或无用的。如果你不喜欢它,不要回应或标记它。