Поделиться через


Сохранение календаря на диск

В этом примере показано, как сохранить весь календарь на диск в файле формата 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);
}

См. также