private static int WriteHeader(EngineerProfile profile, ExcelWorker worker, int row)
 {
     foreach (var header in profile.Header.Scales)
     {
         worker.SetAValue(row++, header);
     }
     return(row);
 }
        public void ConvertAssessment(AssessmentConverter converter)
        {
            //verify if sheet exists
            try
            {
                var value = ActiveSheet.Range["A1"].Value2;
            }
            catch (Exception)
            {
                System.Windows.Forms.MessageBox.Show("Select assessment first before you start using plugin.", "Format error");
                return;
            }

            LoadAllProfiles();
            var techologyGroups = GetTechologyGroups(ProfilesDictionary);

            Assessment assessment = Assessment.Build(ActiveSheet, techologyGroups);

            if (assessment == null)
            {
                System.Windows.Forms.MessageBox.Show("Unable to convert assessment, unknown format.", "Format error");
                return;
            }

            EngineerProfile profile = LoadEngineerProfile(assessment);

            if (profile == null)
            {
                System.Windows.Forms.MessageBox.Show("Unable to detect a profile of assessment, ensure please: 1) profile configuration has keywords selected, 2) assessment has keywords.", "Format error");
                return;
            }
            string workbookName = ActiveWorkbook.Name;
            var    excelRows    = converter.Convert(assessment, profile);

            if (Workbooks == null)
            {
                System.Windows.Forms.MessageBox.Show("Plugin requires restart Excel.", "Internal error");
                return;
            }
            var newWorkBook = Workbooks.Add();
            var activeSheet = newWorkBook.ActiveSheet as Excel.Worksheet;
            //write header
            var worker = new ExcelWorker(activeSheet);

            //header section
            int row = 2;

            row = WriteHeader(profile, worker, row);
            //2 rows separation
            row += 2;
            //
            worker.SetAValue(row, profile.TechnicalAreaText).SetBold(true).SetColor(Assessment.OleHeaderColor).SetWidth(60).SetHeight(15);
            worker.SetValue(row, defaultScaleColumn, profile.ScaleText).SetBold(true).SetColor(Assessment.OleHeaderColor);

            row++;
            foreach (var item in excelRows)
            {
                worker.SetAValue(row, item.Technology).SetColor(item.Color).SetBold(item.isBold);
                worker.SetValue(row, defaultScaleColumn, item.Scale).SetColor(item.Color).SetBold(item.isBold);
                row++;
            }

            MsoFileDialogType dlgType = MsoFileDialogType.msoFileDialogSaveAs;

            Application.FileDialog[dlgType].InitialFileName = string.Format("{0}_{1}", converter.ConverterName, workbookName);
            Application.FileDialog[dlgType].Show();
            if (Application.FileDialog[dlgType].SelectedItems.Count > 0)
            {
                ActiveWorkbook.SaveAs(Application.FileDialog[dlgType].SelectedItems.Item(1), Excel.XlFileFormat.xlOpenXMLWorkbook);
            }
        }