2009-05-23 3 views
1

J'ai un code C# qui envoie un email. Dans le corps de l'e-mail, je veux envoyer le contenu d'une feuille Excel. Une manière de faire est de créer une table html avec des lignes html pour chaque enregistrement dans le fichier Excel et d'intégrer ce code HTML dans le corps de l'e-mail.Comment intégrer le contenu d'une feuille de calcul Excel dans un e-mail en C#?

Existe-t-il une façon plus simple de faire cela? Quelque chose où je peux juste spécifier le chemin de la feuille Excel et directement la table serait copié dans le corps de l'e-mail?

Merci.

Répondre

0

Vous pouvez essayer de le faire via une connexion ADODB à la feuille Excel. http://support.microsoft.com/kb/306023

  1. Ouvrir un jeu d'enregistrements à la feuille Excel
  2. Appel recordset.GetString (http://www.devguru.com/technologies/ado/quickref/recordset_getstring.html). Cela va vider le contenu de la feuille dans la chaîne.

Ceci peut être plus court (en termes de longueur) que le code que vous aviez prévu, ce qui impliquait probablement l'automatisation Excel.

0

Je suppose que vous voulez le faire nativement en C#.

Je pense que votre meilleur pari est d'utiliser Office Automation en C# pour enregistrer la feuille de calcul dans un format de fichier HTML. Vous pouvez ensuite ouvrir ce fichier avec un objet StreamReader et intégrer le texte dans le corps de votre message.

Microsoft a un article sur l'automatisation d'Excel, avec quelques exemples de code pour vous lancer:

Comment automatiser Microsoft Excel à partir de Microsoft Visual C# .NET http://support.microsoft.com/kb/302084

2

De loin le plus facile est d'utiliser la Méthode Workbook.SendMail().

code Exemple:

Excel.Workbook myWorkbook = xlApp.Workbooks["Book1.xls"]; 

string recipients = "[email protected]"; 
string subject = "Proposal for Review"; 
bool returnReceipt = false; 

myWorkbook.SendMail(recipients, subject, returnReceipt); 

Notez que le paramètre recipients est effectivement entré comme System.Object de sorte que l'argument passé à peut être un string[] si vous avez plusieurs destinataires.

Sources:

(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

Vous pouvez également jeter un oeil à l'approche de Ron de Bruin Sending mail from Excel with CDO, mais la méthode Workbook.SendMail() vraiment est le plus facile.

Espérons que cela aide ...

Mike

Questions connexes