Пример #1
0
        [Authorize] // Запрещены анонимные обращения к данной странице
        public ActionResult RezultDemo(InputDataModel input_data)
        {
            SolverDemoModel sm = new SolverDemoModel();

            double[] val = new double[10];
            val = sm.SolverSteelMeltingMixture(input_data);

            // ! Save input data to Session
            Session["input_data"] = input_data;

            List <double> lst = val.OfType <double>().ToList();

            ViewBag.Rashet = lst;

            return(View(input_data));
        }
Пример #2
0
        [Authorize] // Запрещены анонимные обращения к данной странице
        public ActionResult Excel()
        {
            ViewBag.Result = "Файл успешно сохранен!";

            // ! Get input data from Session
            InputDataModel input_data = (InputDataModel)Session["input_data"];

            SolverDemoModel sm = new SolverDemoModel();

            double[] val = new double[10];
            val = sm.SolverSteelMeltingMixture(input_data);

            List <double> lst = val.OfType <double>().ToList();

            ViewBag.Rashet = lst;

            try
            {
                string dataTimeNow = DateTime.Now.ToString("dd MMMM yyyy HH-mm-ss");
                ViewBag.Result = dataTimeNow;

                #region --- Формирование файла Excel с результатами решения задачи
                Excel.Application application = new Excel.Application();
                Excel.Workbook    workBook    = application.Workbooks.Add(System.Reflection.Missing.Value);
                Excel.Worksheet   worksheet   = workBook.ActiveSheet;
                worksheet.Cells[1, 1] = "Оптимизация сталеплавильной шихты";
                worksheet.Cells[2, 1] = "Дата расчета: " + ViewBag.Result;


                worksheet.Cells[4, 1] = "Исходные данные";
                worksheet.Cells[5, 1] = "Состав и стоимость компонентов шихты";
                worksheet.Cells[6, 1] = "Компонент шихты";
                worksheet.Cells[6, 2] = "Si";
                worksheet.Cells[6, 3] = "Mn";
                worksheet.Cells[6, 4] = "Cr";
                worksheet.Cells[6, 5] = "Ni";
                worksheet.Cells[6, 6] = "Стоимость, у.е./т";

                worksheet.Cells[7, 1] = "Чугун литейный хромоникелевый";
                worksheet.Cells[7, 2] = input_data.Si_InComponent_1.ToString();
                worksheet.Cells[7, 3] = input_data.Mn_InComponent_1.ToString();
                worksheet.Cells[7, 4] = input_data.Cr_InComponent_1.ToString();
                worksheet.Cells[7, 5] = input_data.Ni_InComponent_1.ToString();
                worksheet.Cells[7, 6] = input_data.CostComponent_1.ToString();

                worksheet.Cells[8, 1] = "Чугун литейный коксовый";
                worksheet.Cells[8, 2] = input_data.Si_InComponent_2.ToString();
                worksheet.Cells[8, 3] = input_data.Mn_InComponent_2.ToString();
                worksheet.Cells[8, 4] = input_data.Cr_InComponent_2.ToString();
                worksheet.Cells[8, 5] = input_data.Ni_InComponent_2.ToString();
                worksheet.Cells[8, 6] = input_data.CostComponent_2.ToString();

                worksheet.Cells[9, 1] = "Чугун зеркальный";
                worksheet.Cells[9, 2] = input_data.Si_InComponent_3.ToString();
                worksheet.Cells[9, 3] = input_data.Mn_InComponent_3.ToString();
                worksheet.Cells[9, 4] = input_data.Cr_InComponent_3.ToString();
                worksheet.Cells[9, 5] = input_data.Ni_InComponent_3.ToString();
                worksheet.Cells[9, 6] = input_data.CostComponent_3.ToString();

                worksheet.Cells[10, 1] = "Лом чугунный";
                worksheet.Cells[10, 2] = input_data.Si_InComponent_4.ToString();
                worksheet.Cells[10, 3] = input_data.Mn_InComponent_4.ToString();
                worksheet.Cells[10, 4] = input_data.Cr_InComponent_4.ToString();
                worksheet.Cells[10, 5] = input_data.Ni_InComponent_4.ToString();
                worksheet.Cells[10, 6] = input_data.CostComponent_4.ToString();

                worksheet.Cells[11, 1] = "Лом стальной";
                worksheet.Cells[11, 2] = input_data.Si_InComponent_5.ToString();
                worksheet.Cells[11, 3] = input_data.Mn_InComponent_5.ToString();
                worksheet.Cells[11, 4] = input_data.Cr_InComponent_5.ToString();
                worksheet.Cells[11, 5] = input_data.Ni_InComponent_5.ToString();
                worksheet.Cells[11, 6] = input_data.CostComponent_5.ToString();

                worksheet.Cells[12, 1] = "Возврат";
                worksheet.Cells[12, 2] = input_data.Si_InComponent_6.ToString();
                worksheet.Cells[12, 3] = input_data.Mn_InComponent_6.ToString();
                worksheet.Cells[12, 4] = input_data.Cr_InComponent_6.ToString();
                worksheet.Cells[12, 5] = input_data.Ni_InComponent_6.ToString();
                worksheet.Cells[12, 6] = input_data.CostComponent_6.ToString();

                worksheet.Cells[13, 1] = "Ферромарганец";
                worksheet.Cells[13, 2] = input_data.Si_InComponent_7.ToString();
                worksheet.Cells[13, 3] = input_data.Mn_InComponent_7.ToString();
                worksheet.Cells[13, 4] = input_data.Cr_InComponent_7.ToString();
                worksheet.Cells[13, 5] = input_data.Ni_InComponent_7.ToString();
                worksheet.Cells[13, 6] = input_data.CostComponent_7.ToString();

                worksheet.Cells[14, 1] = "Ограничения на содержание компонентов шихты, % от общего веса шихты";
                worksheet.Cells[15, 1] = "Компонент шихты";
                worksheet.Cells[15, 2] = "Минимум";
                worksheet.Cells[15, 3] = "Максимум";

                worksheet.Cells[16, 1] = "Чугун литейный хромоникелевый";
                worksheet.Cells[16, 2] = input_data.ComponentMin_1.ToString();
                worksheet.Cells[16, 3] = input_data.ComponentMax_1.ToString();

                worksheet.Cells[17, 1] = "Чугун литейный коксовый";
                worksheet.Cells[17, 2] = input_data.ComponentMin_2.ToString();
                worksheet.Cells[17, 3] = input_data.ComponentMax_2.ToString();

                worksheet.Cells[18, 1] = "Чугун зеркальный";
                worksheet.Cells[18, 2] = input_data.ComponentMin_3.ToString();
                worksheet.Cells[18, 3] = input_data.ComponentMax_3.ToString();

                worksheet.Cells[19, 1] = "Лом чугунный";
                worksheet.Cells[19, 2] = input_data.ComponentMin_4.ToString();
                worksheet.Cells[19, 3] = input_data.ComponentMax_4.ToString();

                worksheet.Cells[20, 1] = "Лом стальной";
                worksheet.Cells[20, 2] = input_data.ComponentMin_5.ToString();
                worksheet.Cells[20, 3] = input_data.ComponentMax_5.ToString();

                worksheet.Cells[21, 1] = "Возврат";
                worksheet.Cells[21, 2] = input_data.ComponentMin_6.ToString();
                worksheet.Cells[21, 3] = input_data.ComponentMax_6.ToString();

                worksheet.Cells[22, 1] = "Ферромарганец";
                worksheet.Cells[22, 2] = input_data.ComponentMin_7.ToString();
                worksheet.Cells[22, 3] = input_data.ComponentMax_7.ToString();

                worksheet.Cells[23, 1] = "Ограничения на содержание химических элеметов в шихте, % масс.";
                worksheet.Cells[24, 1] = "Элемент";
                worksheet.Cells[24, 2] = "Минимум";
                worksheet.Cells[24, 3] = "Максимум";

                worksheet.Cells[25, 1] = "[Si]";
                worksheet.Cells[25, 2] = input_data.Si_InShihtaNeed_Min.ToString();
                worksheet.Cells[25, 3] = input_data.Si_InShihtaNeed_Max.ToString();

                worksheet.Cells[26, 1] = "[Mn]";
                worksheet.Cells[26, 2] = input_data.Mn_InShihtaNeed_Min.ToString();
                worksheet.Cells[26, 3] = input_data.Mn_InShihtaNeed_Max.ToString();

                worksheet.Cells[27, 1] = "[Cr]";
                worksheet.Cells[27, 2] = input_data.Cr_InShihtaNeed_Min.ToString();
                worksheet.Cells[27, 3] = input_data.Cr_InShihtaNeed_Max.ToString();

                worksheet.Cells[28, 1] = "[Ni]";
                worksheet.Cells[28, 2] = input_data.Ni_InShihtaNeed_Min.ToString();
                worksheet.Cells[28, 3] = input_data.Ni_InShihtaNeed_Max.ToString();

                worksheet.Cells[29, 1] = "Решение задачи";
                worksheet.Cells[30, 1] = "Оптимальный состав сталеплавильной шихты";
                worksheet.Cells[31, 1] = "Компонент шихты";
                worksheet.Cells[31, 2] = "Величина, % от общего веса шихты";

                worksheet.Cells[32, 1] = "Чугун литейный хромоникелевый";
                worksheet.Cells[32, 2] = Math.Round(ViewBag.Rashet[0], 2).ToString();

                worksheet.Cells[33, 1] = "Чугун литейный коксовый";
                worksheet.Cells[33, 2] = Math.Round(ViewBag.Rashet[1], 2).ToString();

                worksheet.Cells[34, 1] = "Чугун зеркальный";
                worksheet.Cells[34, 2] = Math.Round(ViewBag.Rashet[2], 2).ToString();

                worksheet.Cells[35, 1] = "Лом чугунный";
                worksheet.Cells[35, 2] = Math.Round(ViewBag.Rashet[3], 2).ToString();

                worksheet.Cells[36, 1] = "Лом стальной";
                worksheet.Cells[36, 2] = Math.Round(ViewBag.Rashet[4], 2).ToString();

                worksheet.Cells[37, 1] = "Возврат";
                worksheet.Cells[37, 2] = Math.Round(ViewBag.Rashet[5], 2).ToString();

                worksheet.Cells[38, 1] = "Ферромарганец";
                worksheet.Cells[38, 2] = Math.Round(ViewBag.Rashet[6], 2).ToString();


                String excelFileName = Server.MapPath("~/Content") + "\\SteelMeltingMixture.xlsx";

                if (System.IO.File.Exists(excelFileName))
                {
                    System.IO.File.Delete(excelFileName);
                }

                // ! Save path & filename
                workBook.SaveAs(excelFileName);

                workBook.Close(false, Type.Missing, Type.Missing);
                Marshal.ReleaseComObject(workBook);
                application.Quit();
                Marshal.FinalReleaseComObject(application);

                // ! Redirect to download file
                Response.RedirectPermanent("/Content/SteelMeltingMixture.xlsx");

                #endregion --- Формирование файла Excel с результатами решения задачи
            }
            catch (Exception e)
            {
                ViewBag.Result = "Невозможно сохранить файл (" + e.Message + ").";
            }
            return(View());
        }