// Create Method
        public void Create(SPTypes SPType)
        {
            try
            {
                // Declare specification component
                Component specComponent = null;

                // Check whether the component exist
                if (!IsComponentExist(SPType, out specComponent))
                {
                    System.Windows.MessageBox.Show("Компонент для данного типа спецификации отсутствует в модели.", "Компонент отсутствует в модели", MessageBoxButton.OK);
                    return;
                }
                // Open Workbook
                Excel.Application excelApp;
                Excel.Workbook    workBook = ExcelClass.OpenExcelWorkBook(FilePath, out excelApp, true);
                // Get appropriate work sheet
                Excel.Worksheet workSheet = GetWorkSheet(workBook, SPType);
                // Get specification header
                string specHeader = GetSpecificationHeader(SPType);
                // Format worksheet columns
                FormatWorkSheet(workSheet, specHeader);
                // Load Data
                table = GetDataTable(specComponent);
                // Refine and Merge table rows
                RefineAndMerge();
                // Sort table
                SortData(SPType);
                // Write data to Excel sheet
                WriteData(workSheet);
                // Match VP and SP data
                MatchData(workSheet, excelApp);

                // Close Excel
                ExcelClass.CloseExcel(workBook, excelApp);
            }
            catch (Exception ex)
            {
                System.Windows.MessageBox.Show(ex.Message, System.Reflection.MethodBase.GetCurrentMethod().Name, MessageBoxButton.OK);
            }
        }
        private void SearchSPFile()
        {
            try
            {
                // Search for SP file in project directory
                List <string> foundFiles = Directory.GetFiles(projectDirectory, "СП " + mainComponent.PartNumber + "*.*")
                                           .Where(file => file.ToLower().EndsWith("xls") || file.ToLower().EndsWith("xlsx"))
                                           .ToList();

                if (foundFiles.Count > 0)
                {
                    FilePath = foundFiles[0];
                }
                else
                {
                    // Set file path
                    FilePath = Path.Combine(projectDirectory, "СП " + mainComponent.PartNumber + ".xlsx");

                    // Create SP file
                    Excel.Application excelApp = new Excel.Application();
                    if (excelApp == null)
                    {
                        Console.WriteLine("EXCEL could not be started. Check that your office installation and project references are correct.");
                        return;
                    }
                    excelApp.Visible = false;
                    Excel.Workbook excelWorkBook = excelApp.Workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
                    excelWorkBook.SaveAs(FilePath);
                    excelApp.Quit();
                    ExcelClass.KillExcelProcess(excelApp);
                }
                FileName = Path.GetFileName(FilePath);
            }
            catch (Exception ex)
            {
                System.Windows.MessageBox.Show(ex.Message, System.Reflection.MethodBase.GetCurrentMethod().Name, MessageBoxButton.OK);
            }
        }