public void ReportActivityList(CoreObjects.ProgramActivity[] activities, string destinationFilePath, bool convertToPDF)
        {
            string templatePath = Controllers.OutputManager.Instance.ReporActivityListTemplatePath;
            if (File.Exists(templatePath) && Connect())
            {
                try
                {
                    Excel.Workbook sourceWorkBook = _excelObject.Workbooks.Open(templatePath);
                    Excel.Worksheet workSheet = sourceWorkBook.Worksheets["Program Activities"];

                    DateTime start = activities.FirstOrDefault().Time;
                    DateTime end = activities.LastOrDefault().Time;
                    string title = string.Format("Program Activity For {0}", activities.FirstOrDefault().Day.Station.Name);
                    string dateRange = string.Format("Between {0} and {1} from {2} to {3}", new string[] { start.ToString("MM/dd/yyyy"), end.ToString("MM/dd/yyyy"), start.ToString("hh:mmtt"), end.ToString("hh:mmtt") });
                    workSheet.PageSetup.CenterHeader = "&12&B" + title + (char)13 + dateRange;

                    DateTime sheduleGenrated = DateTime.Now;
                    workSheet.PageSetup.CenterFooter = "&11Generated" + (char)13 + sheduleGenrated.ToString("MM/dd/yy h:mm tt");

                    Excel.Range range = workSheet.Range["Date"];
                    int firstRow = range.Row + 1;
                    int lastRow = firstRow;
                    int firstColumn = range.Column;
                    range = workSheet.Range["Type"];
                    int lastColumn = range.Column;

                    List<object[]> rows = new List<object[]>();
                    foreach (CoreObjects.ProgramActivity activity in activities)
                    {
                        List<object> cells = new List<object>();
                        cells.Add(activity.Date.ToString("MM/dd/yyyy"));
                        cells.Add(activity.Date.ToString("ddd"));
                        cells.Add(activity.Time.ToString("hh:mmtt"));
                        cells.Add(activity.ProgramExtended);
                        cells.Add(activity.HouseNumber);
                        cells.Add(activity.Episode);
                        cells.Add(activity.Type);
                        rows.Add(cells.ToArray());
                        lastRow++;
                    }
                    if (lastRow > firstRow)
                        lastRow--;

                    if (rows.Count > 0)
                    {
                        object[,] values = new object[rows.Count, rows[0].Length];
                        for (int i = 0; i < rows.Count; i++)
                            for (int j = 0; j < rows[0].Length; j++)
                                values[i, j] = rows[i][j];

                        range = workSheet.Range[GetColumnLetterByIndex(firstColumn) + firstRow.ToString() + ":" + GetColumnLetterByIndex(lastColumn) + lastRow.ToString()];
                        range.Value2 = values;
                        range.Rows.AutoFit();
                        range.Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle = Excel.XlLineStyle.xlContinuous;
                        range.Borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle = Excel.XlLineStyle.xlContinuous;
                        range.Borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle = Excel.XlLineStyle.xlContinuous;
                        range.Borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle = Excel.XlLineStyle.xlContinuous;
                        range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].LineStyle = Excel.XlLineStyle.xlContinuous;
                        range.Borders[Excel.XlBordersIndex.xlInsideVertical].LineStyle = Excel.XlLineStyle.xlContinuous;

                        if (convertToPDF)
                            sourceWorkBook.ExportAsFixedFormat(Filename: destinationFilePath, Type: Excel.XlFixedFormatType.xlTypePDF);
                        else
                            sourceWorkBook.SaveAs(Filename: destinationFilePath, FileFormat: Excel.XlFileFormat.xlWorkbookNormal);
                    }

                    sourceWorkBook.Close();
                }
                catch (Exception ex)
                {
                    Controllers.AppManager.Instance.Log.Records.Add(new CoreObjects.LogRecord(ex));
                    Controllers.AppManager.Instance.Log.Save();
                }
                Disconnect();
            }
        }