private static String BuildAnalysis()
        {
            String analysis = "";

            ExcelWriterReader <AnalysisDTO> excelWriter = new ExcelWriterReader <AnalysisDTO>();
            AnalysisDTO analysisDTO = null;

            analysis += "__________________________________________________________________________________________\n";
            analysis += "Размерность матриц : " + TargetMatrixSize + "*" + TargetMatrixSize + ", Количество матриц : " + CountOfMatrix + "\n";

            if (BruteForceMethodEnable)
            {
                analysis += "Сумма расстояний для полного перебора : " + BruteForceSums + "\n";
            }

            if (BranchMethodEnable)
            {
                analysis += "Сумма расстояний для метода ветвей и границ : " + BranchClassicSums + "\n";
            }

            if (BranchPlusMethodEnable)
            {
                analysis += "Сумма расстояний для метода ветвей и границ+ : " + BranchClassicPlusSums + "\n";
            }

            if (BranchPlusMethodEnable && BranchMethodEnable)
            {
                analysis += "Совпало : " + odinakovih + ", лучше : " + luche + ", хуже : " + huge + "\n";

                analysisDTO = new AnalysisDTO("Метод ветвей и границ", "Метод ветвей и границ PLUS"
                                              , TargetMatrixSize, CountOfMatrix, ListWithBranchClassicSum, ListWithBranchClassicPlusSum);
            }

            if (BranchMethodEnable && BcSharpMethodEnable)
            {
                analysis = "";

                analysisDTO = new AnalysisDTO(BranchAndBounceClassicTitle, BranchAndBounceSharpTitle
                                              , TargetMatrixSize, CountOfMatrix, ListWithBranchClassicSum, ListWithAllSumsForBcSharpSolutions);
            }

            if (IsWriteToExcel && analysisDTO != null)
            {
                excelWriter.WriteToFile(null, null, analysisDTO);
            }

            return(analysis);
        }
        public IHttpActionResult GetAnalysis(int filter)
        {
            var dt = bl.GetAnalysis(filter);

            AnalysisModel analysisModel = new AnalysisModel();

            foreach (DataRow row in dt.Rows)
            {
                AnalysisDTO analysis = new AnalysisDTO
                {
                    id   = int.Parse(row["id"].ToString()),
                    name = row["name"].ToString()
                };
                analysisModel.analysis.Add(analysis);
            }

            if (dt == null)
            {
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound));
            }

            return(Json(analysisModel));
        }
Exemple #3
0
        public bool WriteToFile(string nameOfFile, string directoryPath, T objectToSave)
        {
            AnalysisDTO analysysDTO = null;

            if (objectToSave is AnalysisDTO)
            {
                analysysDTO = objectToSave as AnalysisDTO;
            }
            else
            {
                throw new InvalidCastException("This is object not instatnce of AnalysysDTO");
            }

            #region  абота с директорией

            if (directoryPath == null || directoryPath.Length == 0)
            {
                directoryPath = @"c:\Parsed_Data";  // Директория для сохранения файлов Excel
            }
            // Проверяем , чтобы директория существовала. Если её нет — создаем.
            try
            {
                // Проверяем, существует ли директория
                if (!Directory.Exists(directoryPath))
                {
                    // Пытаемся создать директорию
                    DirectoryInfo di = Directory.CreateDirectory(directoryPath);
                }
            }
            catch (DirectoryNotFoundException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally { }
            #endregion

            #region  абота с файлом

            if (nameOfFile == null || nameOfFile.Length == 0)
            {
                nameOfFile = "Count - " + analysysDTO.CountOfMatrix + "__Size - " + analysysDTO.MatrixSize;
            }

            // Создание файла
            string file = "C:\\Parsed_Data\\" + nameOfFile + ".xls";

            // Проверка на существование файла
            if (File.Exists(file))
            {
                int i = 1;
                do
                {
                    file = "C:\\Parsed_Data\\" + nameOfFile + "-" + i + ".xls";
                    ++i;
                } while (File.Exists(file));
            }
            #endregion

            #region Запись в Excel(.xls)
            // Создание книжки
            Workbook workbook = new Workbook();
            // Создание таблицы
            Worksheet worksheet = new Worksheet("First List");

            // Указываем ширину столбцов
            worksheet.Cells.ColumnWidth[0, 0] = 7000;
            worksheet.Cells.ColumnWidth[0, 1] = 7000;
            worksheet.Cells.ColumnWidth[0, 2] = 7000;
            worksheet.Cells.ColumnWidth[0, 3] = 7000;

            worksheet.Cells[0, 0] = new Cell("Количество матриц: " + analysysDTO.CountOfMatrix);
            worksheet.Cells[1, 0] = new Cell("Размерность матриц: " + analysysDTO.MatrixSize);
            worksheet.Cells[2, 0] = new Cell("Совпало решений: " + analysysDTO.SecondMethodSumEqualsFirstMethodSum);
            worksheet.Cells[3, 0] = new Cell("PLUS лучше Classic: " + analysysDTO.SecondMethodSumBestThenFirstMethodSum);
            worksheet.Cells[4, 0] = new Cell("Classic лучше PLUS: " + analysysDTO.SecondMethodSumLessThenFirstMethodSum);

            // Делаем «Шапку» для таблицы
            worksheet.Cells[6, 0] = new Cell("Матрица №");
            worksheet.Cells[6, 1] = new Cell(analysysDTO.FirstMethodTitle);
            worksheet.Cells[6, 2] = new Cell(analysysDTO.SecondMethodTitle);
            worksheet.Cells[6, 3] = new Cell("Delta (SUM(plus) - SUM(classic))");

            int startIndex = 7;

            // Указываем , в какую ячейку писать информацию, которая пишется в таблицу
            for (int i = 0; i < analysysDTO.FirstMethodAllMatrixSum.Count; i++)
            {
                worksheet.Cells[i + startIndex, 0] = new Cell(i + 1);
                worksheet.Cells[i + startIndex, 1] = new Cell(analysysDTO.FirstMethodAllMatrixSum[i]);
                worksheet.Cells[i + startIndex, 2] = new Cell(analysysDTO.SecondMethodAllMatrixSum[i]);
                worksheet.Cells[i + startIndex, 3] = new Cell(analysysDTO.FirstAndSecondMethodsDelta[i]);
            }

            // Добавляем таблицу в таблицы файла
            workbook.Worksheets.Add(worksheet);
            // Сохраняем файл
            workbook.Save(file);
            #endregion

            return(true);
        }