У меня всего 3 пользовательских свойства, но не у всех писем есть все три свойства.Иногда электронная почта может иметь только 2 из 3 пользовательских свойств.Теперь проблема в том, что когда я пытаюсь загрузить все электронные письма в Excel, я получаю следующую ошибку, потому что в некоторых электронных письмах отсутствуют эти пользовательские свойства.
Object reference not set to an instance of an object.
Как обойти эту ошибку и оставить пустую ячейку в Excel, где отсутствует пользовательское свойство.
Вот мой код.
private void Export_Click(object sender, RibbonControlEventArgs e)
{
Outlook.UserProperties MailUserProperties = null;
Outlook.UserProperty MailUserProperty = null;
Excel.Application oApp = null;
Excel.Workbook oWB = null;
Excel.Worksheet oSheet = null;
oApp = new Excel.Application();
oWB = oApp.Workbooks.Add();
oSheet = (Excel.Worksheet)oWB.Worksheets.get_Item(1);
try
{
for (int i = 2; i <= selectedFolder.Items.Count; i++)
{
Outlook.MailItem mail = (Outlook.MailItem)selectedFolder.Items[i];
MailUserProperties = mail.UserProperties;
oSheet.Cells[i, 1] = i.ToString();
oSheet.Cells[i, 2] = mail.Sender;
oSheet.Cells[i, 3] = mail.Subject;
oSheet.Cells[i, 4] = mail.ReceivedTime.ToLongDateString();
for (int j = 1; j <= MailUserProperties.Count; j++)
{
MailUserProperty = MailUserProperties[j];
if (MailUserProperty != null)
{
try
{
oSheet.Cells[i, 5] = mail.UserProperties["Ownership"].Value;
oSheet.Cells[i, 6] = mail.UserProperties["CompletedTime"].Value;
oSheet.Cells[i, 7] = mail.UserProperties["TimeSpent"].Value;
}
catch(Exception ex)
{
MessageBox.Show("The following error occured." + ex.Message);
}
}
}
}
oSheet.UsedRange.Columns.AutoFit();
}
catch (System.Runtime.InteropServices.COMException ex)
{
Console.WriteLine(ex.ToString());
}
finally
{
// Code to save in Excel
}
}
Спасибо.