public static byte[] GenerateExcelReportForContacts(CEAEDBEntities db)
        {
            #region GenerateDocument

            var memoryStream = new MemoryStream();
            using (var document = SpreadsheetDocument.Create(memoryStream, SpreadsheetDocumentType.Workbook))
            {
                var workbookpart = document.AddWorkbookPart();
                workbookpart.Workbook = new Workbook();
                //add Style
                var stylePart = workbookpart.AddNewPart <WorkbookStylesPart>();
                stylePart.Stylesheet = GenerateStylesheet();
                stylePart.Stylesheet.Save();

                var sheets = document.WorkbookPart.Workbook.AppendChild(new Sheets());

                uint sheetID = 1;


                CreateContactsSheet(document, sheets, db, sheetID);
                sheetID++;
                CreateUsersSheet(document, sheets, db, sheetID);
                sheetID++;
                CreateTestResultSheet(document, sheets, db, sheetID);
                //save data

                document.Close();
            }

            var result = memoryStream.ToArray();

            #endregion

            return(result);
        }
        private static void CreateContactsSheet(SpreadsheetDocument document, OpenXmlElement sheets, CEAEDBEntities db, uint sheetID = 1)
        {
            var newWorksheetPart = document.WorkbookPart.AddNewPart <WorksheetPart>();

            var relationshipId = document.WorkbookPart.GetIdOfPart(newWorksheetPart);
            var sheet          = new Sheet
            {
                Id      = relationshipId,
                SheetId = sheetID,
                Name    = "Anonymous Users Contacts"
            };

            sheets.AppendChild(sheet);

            var sheetData = new SheetData();


            newWorksheetPart.Worksheet = new Worksheet(sheetData);

            //create header rows

            var projectRow = CreateHeaderRow(1);

            sheetData.AppendChild(projectRow);

            //creating content rows
            var colIndex = 2;

            var contacts = db.Contacts.ToList();

            foreach (var contact in contacts)
            {
                //creating row for this user
                var row = CreateContactRow(colIndex, contact);
                sheetData.AppendChild(row);

                colIndex++;
            }


            //set col width
            var columns = new Columns();

            columns.Append(new Column {
                Min = 1, Max = 250, Width = 20, CustomWidth = true
            });
            columns.Append(new Column {
                Min = 2, Max = 250, Width = 12, CustomWidth = true
            });
            newWorksheetPart.Worksheet.Append(columns);

            newWorksheetPart.Worksheet.Save();
        }