Importer des données XML de rendez-vous dans des objets rendez-vous Outlook (Outlook)
Cette rubrique montre comment lire les données de rendez-vous au format XML, enregistrer les données dans des objets AppointmentItem Microsoft Outlook dans le calendrier par défaut et retourner les objets de rendez-vous dans un tableau.
|
|Helmut Obertanner propose les exemples de code suivants. Helmut est un professionnel microsoft le plus précieux avec une expertise dans les outils de développement Microsoft Office dans Microsoft Visual Studio et Microsoft Office Outlook.|
Les exemples de code managé suivants sont écrits dans C# et Visual Basic. Pour exécuter un exemple de code managé .NET Framework qui doit appeler un modèle COM (Component Object Model), vous devez utiliser un assembly d’interopérabilité qui définit et mappe des interfaces managées avec des objets COM dans la bibliothèque de types de modèle objet. Pour Outlook, utilisez Visual Studio et l’assembly PIA (Primary Interop Assembly) Outlook. Avant d’exécuter des exemples de code managé pour Outlook 2013, vérifiez que vous avez installé l’assembly PIA Outlook 2013 et que vous avez ajouté une référence au composant Bibliothèque d’objets Microsoft Outlook 15.0 dans Visual Studio. Utilisez les exemples de code suivants dans la ThisAddIn
classe d’un complément Outlook (à l’aide des outils de développement Office pour Visual Studio). L'objet Application dans le code doit être un objet Application Outlook approuvé fourni par ThisAddIn.Globals
.
Pour plus d’informations sur l’utilisation de l’assembly PIA Outlook pour développer des solutions Outlook managées, voir Bienvenue dans la référence de l’assembly d’interopérabilité principal Outlook.
Les exemples de code suivants contiennent la CreateAppointmentsFromXml
méthode de la Sample
classe, implémentée dans le cadre d’un projet de complément Outlook. Chaque projet ajoute une référence à l'assembly PIA d'Outlook en fonction de l'espace de noms Microsoft.Office.Interop.Outlook.
La CreateAppointmentsFromXml
méthode accepte deux paramètres d’entrée, application et xml :
application est un objet Application Outlook approuvé.
xml est une chaîne XML ou une chaîne qui représente un chemin d'accès à un fichier XML valide. Pour les exemples de code suivants, le code XML délimite les données de rendez-vous à l’aide des balises XML suivantes :
Données de rendez-vous | Balise XML de délimitation |
---|---|
Ensemble complet des données de rendez-vous | <Rendez-vous> |
Chaque rendez-vous de l’ensemble | <Nomination> |
Heure de début d’un rendez-vous | <Starttime> |
Heure de fin d’un rendez-vous | <heure de fin> |
Titre d’un rendez-vous | <Objet> |
Lieu d’un rendez-vous | <Emplacement> |
Détails d’un rendez-vous | <Corps> |
L’exemple suivant expose les données d’entrée du paramètre xml.
<?xml version="1.0" encoding="utf-8" ?>
<appointments>
<appointment>
<starttime>2009-06-01T15:00:00</starttime>
<endtime>2009-06-01T16:15:00</endtime>
<subject>This is a Test-Appointment</subject>
<location>At your Desk</location>
<body>Here is the Bodytext</body>
</appointment>
<appointment>
<starttime>2009-06-01T17:00:00</starttime>
<endtime>2009-06-01T17:15:00</endtime>
<subject>This is a second Test-Appointment</subject>
<location>At your Desk</location>
<body>Here is the Bodytext</body>
</appointment>
<appointment>
<starttime>2009-06-01T17:00:00</starttime>
<endtime>2009-06-01T18:15:00</endtime>
<subject>This is a third Test-Appointment</subject>
<location>At your Desk</location>
<body>Here is the Bodytext</body>
</appointment>
</appointments>
La CreateAppointmentsFromXml
méthode utilise l’implémentation Microsoft COM du modèle DOM (Document Object Model) XML pour charger et traiter les données XML que xml fournit. CreateAppointmentsFromXml
Vérifie d’abord si xml spécifie une source valide de données XML. Si c'est le cas, il charge les données dans un document XML, DOMDocument. Sinon, CreateAppointmentsFromXml
lève une exception. Pour plus d'informations sur XML DOM, consultez DOM.
Pour chaque nœud enfant de rendez-vous délimité par la <balise appointment> dans les données XML, CreateAppointmentsFromXml
recherche des balises spécifiques, utilise le DOM pour extraire les données et affecte les données aux propriétés correspondantes d’un objet AppointmentItem : Start, End, Subject, Location et Body. CreateAppointmentsFromXml
enregistre le rendez-vous dans le calendrier par défaut.
CreateAppointmentsFromXml
utilise la méthode Add de la classe List( type) dans l’espace de noms System.Collections.Generic pour agréger ces objets AppointmentItem . Lorsque la méthode a traité tous les rendez-vous dans les données XML, elle renvoie les objets AppointmentItem dans un tableau.
L’exemple de code suivant est écrit en C#.
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Xml;
using Outlook = Microsoft.Office.Interop.Outlook;
namespace OutlookAddIn1
{
class Sample
{
Outlook.AppointmentItem[] CreateAppointmentsFromXml(Outlook.Application application,
string xml)
{
// Create a list of appointment objects.
List<Outlook.AppointmentItem> appointments = new
List<Microsoft.Office.Interop.Outlook.AppointmentItem>();
XmlDocument xmlDoc = new XmlDocument();
// If xml is an XML string, create the document directly.
if (xml.StartsWith("<?xml"))
{
xmlDoc.LoadXml(xml);
}
else if (File.Exists(xml))
{
xmlDoc.Load(xml);
}
else
{
throw new Exception(
"The input string is not valid XML data or the specified file doesn't exist.");
}
// Select all appointment nodes under the root appointments node.
XmlNodeList appointmentNodes = xmlDoc.SelectNodes("appointments/appointment");
foreach (XmlNode appointmentNode in appointmentNodes)
{
// Create a new AppointmentItem object.
Outlook.AppointmentItem newAppointment =
(Outlook.AppointmentItem)application.CreateItem(Outlook.OlItemType.olAppointmentItem);
// Loop over all child nodes, check the node name, and import the data into the
// appointment fields.
foreach (XmlNode node in appointmentNode.ChildNodes)
{
switch (node.Name)
{
case "starttime":
newAppointment.Start = DateTime.Parse(node.InnerText);
break;
case "endtime":
newAppointment.End = DateTime.Parse(node.InnerText);
break;
case "subject":
newAppointment.Subject = node.InnerText;
break;
case "location":
newAppointment.Location = node.InnerText;
break;
case "body":
newAppointment.Body = node.InnerText;
break;
}
}
// Save the item in the default calendar.
newAppointment.Save();
appointments.Add(newAppointment);
}
// Return an array of new appointments.
return appointments.ToArray();
}
}
}
L'exemple de code suivant est écrit en Visual Basic.
Imports System.IO
Imports System.Xml
Imports Outlook = Microsoft.Office.Interop.Outlook
Namespace OutlookAddIn2
Class Sample
Function CreateAppointmentsFromXml(ByVal application As Outlook.Application, _
ByVal xml As String) As Outlook.AppointmentItem()
Dim appointments As New List(Of Outlook.AppointmentItem)
Dim xmlDoc As New XmlDocument()
If xml is an XML string, create the XML document directly.
If xml.StartsWith("<?xml") Then
xmlDoc.LoadXml(xml)
ElseIf (File.Exists(xml)) Then
xmlDoc.Load(xml)
Else
Throw New Exception("The input string is not valid XML data or the specified file doesn't exist.")
End If
' Select all appointment nodes under the root appointments node.
Dim appointmentNodes As XmlNodeList = xmlDoc.SelectNodes("appointments/appointment")
For Each appointmentNode As XmlNode In appointmentNodes
' Create a new AppointmentItem object.
Dim newAppointment As Outlook.AppointmentItem = _
DirectCast(application.CreateItem(Outlook.OlItemType.olAppointmentItem), _
Outlook.AppointmentItem)
' Loop over all child nodes, check the node name, and import the data into the appointment fields.
For Each node As XmlNode In appointmentNode.ChildNodes
Select Case (node.Name)
Case "starttime"
newAppointment.Start = DateTime.Parse(node.InnerText)
Case "endtime"
newAppointment.End = DateTime.Parse(node.InnerText)
Case "subject"
newAppointment.Subject = node.InnerText
Case "location"
newAppointment.Location = node.InnerText
Case "body"
newAppointment.Body = node.InnerText
End Select
Next
' Save the item in the default calendar.
newAppointment.Save()
appointments.Add(newAppointment)
Next
' Return an array of new appointments.
Return appointments.ToArray()
End Function
End Class
End Namespace
Assistance et commentaires
Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.