【发布时间】:2009-05-23 02:01:42
【问题描述】:
我有发送电子邮件的 C# 代码。 在电子邮件的正文中,我想发送 Excel 表格的内容。
一种方法是为 excel 文件中的每条记录创建包含 html 行的 html 表,并将此 html 代码嵌入到电子邮件正文中。
有没有更简单的方法来做到这一点? 我可以指定 Excel 工作表的路径并直接将表格复制到电子邮件正文中的东西?
谢谢。
【问题讨论】:
我有发送电子邮件的 C# 代码。 在电子邮件的正文中,我想发送 Excel 表格的内容。
一种方法是为 excel 文件中的每条记录创建包含 html 行的 html 表,并将此 html 代码嵌入到电子邮件正文中。
有没有更简单的方法来做到这一点? 我可以指定 Excel 工作表的路径并直接将表格复制到电子邮件正文中的东西?
谢谢。
【问题讨论】:
目前最简单的是使用 Workbook.SendMail() 方法。
示例代码:
Excel.Workbook myWorkbook = xlApp.Workbooks["Book1.xls"];
string recipients = "johndoe@email.com";
string subject = "Proposal for Review";
bool returnReceipt = false;
myWorkbook.SendMail(recipients, subject, returnReceipt);
请注意,recipients 参数实际上键入为System.Object,因此如果您有多个收件人,传入的参数可以是string[]。
来源:
(1)http://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.workbook.sendmail(VS.80).aspx
(2)http://msdn.microsoft.com/en-us/library/bb178034.aspx
您可能还想看看 Ron de Bruin 的 Sending mail from Excel with CDO 方法,但 Workbook.SendMail() 方法确实是最简单的。
希望这会有所帮助...
迈克
【讨论】:
您可以尝试通过 ADODB 连接到 Excel 工作表来执行此操作。 http://support.microsoft.com/kb/306023
这可能比您计划的代码更短(在长度上),这可能涉及 Excel 自动化。
【讨论】:
它没有嵌入,但你可以试试附件类:http://msdn.microsoft.com/en-us/library/system.net.mail.attachment.aspx
替代方法是使用第 3 方 excel 控件将其打开,将数据复制出来,然后将其粘贴到消息中。
【讨论】:
我假设您想在 c# 中本地执行此操作。
我认为最好的办法是使用 C# 中的 Office 自动化将电子表格保存为 HTML 文件格式。然后,您可以使用 StreamReader 对象打开此文件并将文本嵌入到您的消息正文中。
Microsoft 有一篇关于自动化 Excel 的文章,其中包含一些代码示例可以帮助您入门:
如何从 Microsoft Visual C# .NET 自动化 Microsoft Excel http://support.microsoft.com/kb/302084
【讨论】: