Сохранение календаря на диск
В этом примере показано, как сохранить весь календарь на диск в файле формата iCalendar (ICS-файле).
Пример
В данном образце кода задействован объект CalendarSharing , поддерживающий сохранение на диск всего календаря или ряда встреч из него. ICS-файл автоматически оптимизируется в Outlook, чтобы повторяющиеся события не сохранялись в качестве отдельных встреч в ICS-файле. В зависимости от размера сохраняемого календаря его запись на диск может потребовать значительного времени. Во время сохранения календаря окно Outlook не реагирует на действия пользователя.
В этом образце кода сначала вызывается GetCalendarExporter по отношению к папке "Календарь" по умолчанию для получения объекта CalendarSharing. Затем задаются свойства объекта CalendarSharing, указывающие критерии для экспорта (например, нужно ли сохранять календарь целиком, включая сведения о встречах с отметкой "частная").
Чтобы сохранить данные календаря в ICS-файле, пример кода вызывает метод SaveAsICal объекта CalendarSharing.
Если для тестирования этого примера кода вы используете Visual Studio, сначала добавьте ссылку на компонент библиотеки объектов Microsoft Outlook 15.0 и укажите переменную Outlook при импорте пространства имен Microsoft.Office.Interop.Outlook. Инструкция Imports или using не должна идти непосредственно перед функциями в примере кода, но ее нужно добавить перед объявлением общедоступного класса. В следующих строках кода показано, как выполнить импорт и назначение в Visual Basic и C#.
Imports Outlook = Microsoft.Office.Interop.Outlook
using Outlook = Microsoft.Office.Interop.Outlook;
Private Sub SaveCalendarToDisk(ByVal calendarFileName As String)
If String.IsNullOrEmpty(calendarFileName) Then
Throw New ArgumentException( _
"Parameter must contain a value.", "calendarFileName")
End If
Dim calendar As Outlook.Folder = TryCast( _
Application.Session.GetDefaultFolder(_
Outlook.OlDefaultFolders.olFolderCalendar), Outlook.Folder)
Dim exporter As Outlook.CalendarSharing = _
calendar.GetCalendarExporter()
'' Set the properties for the export
exporter.CalendarDetail = Outlook.OlCalendarDetail.olFullDetails
exporter.IncludeAttachments = True
exporter.IncludePrivateDetails = True
exporter.RestrictToWorkingHours = False
exporter.IncludeWholeCalendar = True
'' Save the calendar to disk
exporter.SaveAsICal(calendarFileName)
End Sub
private void SaveCalendarToDisk(string calendarFileName)
{
if (string.IsNullOrEmpty(calendarFileName))
throw new ArgumentException("calendarFileName",
"Parameter must contain a value.");
Outlook.Folder calendar = Application.Session.GetDefaultFolder(
Outlook.OlDefaultFolders.olFolderCalendar) as Outlook.Folder;
Outlook.CalendarSharing exporter = calendar.GetCalendarExporter();
// Set the properties for the export
exporter.CalendarDetail = Outlook.OlCalendarDetail.olFullDetails;
exporter.IncludeAttachments = true;
exporter.IncludePrivateDetails = true;
exporter.RestrictToWorkingHours = false;
exporter.IncludeWholeCalendar = true;
// Save the calendar to disk
exporter.SaveAsICal(calendarFileName);
}