예제 #1
0
        public bool ImportFidersFile()
        {
            this.Cursor = Cursors.WaitCursor;
            int  i           = 1;
            int  ImportCount = 0;
            bool result      = true;

            //ExcelTools.CheckExcellProcesses();

            Excel.Application ExcelImportFile = new Excel.Application
            {
                DisplayAlerts = false
            };
            Excel.Workbook  workbook  = null;
            Excel.Worksheet worksheet = null;


            try
            {
                // Открываем книгу из папки с запускаемым файлом
                workbook = ExcelImportFile.Workbooks.Open(eImportFile.Text);

                // Получаем первую таблицу
                worksheet = workbook.ActiveSheet as Excel.Worksheet;
                while (true)
                {
                    i++;

                    string FiderName = worksheet.Cells[i, 1].Text;
                    if (FiderName == "")
                    {
                        break;
                    }
                    string TP = worksheet.Cells[i, 2].Text;
                    if (TP == "")
                    {
                        TP = "0";
                    }
                    string SZO = worksheet.Cells[i, 3].Text;
                    if (SZO == "")
                    {
                        SZO = "0";
                    }
                    string NP = worksheet.Cells[i, 4].Text;
                    if (NP == "")
                    {
                        NP = "0";
                    }
                    string population = worksheet.Cells[i, 5].Text;
                    if (population == "")
                    {
                        population = "0";
                    }

                    //Новое в версии 1.0.4.0
                    string P_load_l = worksheet.Cells[i, 6].Text;
                    if (P_load_l == "")
                    {
                        P_load_l = "0,000";
                    }
                    string P_load_z = worksheet.Cells[i, 7].Text;
                    if (P_load_z == "")
                    {
                        P_load_z = "0,000";
                    }

                    int FiderType = cbTypeVL.SelectedIndex;

                    if (Mysql.FindFiderInBase(FiderName))
                    {
                        MessageBox.Show("В базе уже содержится " + FiderName + "\nДобавить объект с таким же именем невозможно!");
                    }
                    else
                    {
                        if (!Mysql.AddNewFiderInBase(FiderName, FiderType, Config.Reses[cbRes.Text].Id, Config.Companies[cbCompany.Text].Id, Convert.ToInt32(TP), Convert.ToInt32(SZO), Convert.ToInt32(NP), Convert.ToInt32(population), Convert.ToDecimal(P_load_l), Convert.ToDecimal(P_load_z)))
                        {
                            MessageBox.Show("Ошибка при импорте объекта - " + FiderName);
                            break;
                        }
                        else
                        {
                            ImportCount++;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                result = false;
            }
            finally
            {
                MessageBox.Show("Импортировано - " + ImportCount.ToString() + " объектов");

                workbook.Close(false, System.Reflection.Missing.Value, System.Reflection.Missing.Value);
                System.Runtime.InteropServices.Marshal.FinalReleaseComObject(worksheet);
                System.Runtime.InteropServices.Marshal.FinalReleaseComObject(workbook);

                ////Подготовка к убийству процесса Excel
                int ExcelPID = 0;
                int Hwnd     = 0;
                Hwnd = ExcelImportFile.Hwnd;
                System.Diagnostics.Process ExcelProcess;
                GetWindowThreadProcessId((IntPtr)Hwnd, out ExcelPID);
                ExcelProcess = System.Diagnostics.Process.GetProcessById(ExcelPID);
                ////Конец подготовки к убийству процесса Excel



                ExcelImportFile.Quit();
                System.Runtime.InteropServices.Marshal.FinalReleaseComObject(ExcelImportFile);

                GC.Collect();
                GC.WaitForPendingFinalizers();

                ////Убийство процесса Excel
                ExcelProcess.Kill();
                ExcelProcess = null;

                //ExcelTools.KillExcel();

                this.Cursor = Cursors.Default;
            }

            return(result);
        }
예제 #2
0
        private void btn_save_Click(object sender, EventArgs e)
        {
            if (cbRes.SelectedIndex < 0)
            {
                MessageBox.Show("Необходимо выбрать РЭС.");
            }
            else
            {
                bool err = false;
                if ((l1.Visible) && (l1.Text == ""))
                {
                    err = true;
                }
                if ((p1.Visible) && (p1.Text == ""))
                {
                    err = true;
                }
                if ((p2.Visible) && (p2.Text == ""))
                {
                    err = true;
                }
                if ((p3.Visible) && (p3.Text == ""))
                {
                    err = true;
                }
                if ((p4.Visible) && (p4.Text == ""))
                {
                    err = true;
                }

                if ((FiderId == int.MinValue) && err)
                {
                    MessageBox.Show("Не все поля заполнены");
                }
                else
                {
                    if (FiderId == int.MinValue)  //Если это новый фидер
                    {
                        if (Mysql.FindFiderInBase(edFiderName.Text))
                        {
                            MessageBox.Show("В базе уже содержится " + edFiderName.Text + "\nДобавить объект с таким же именем невозможно!");
                        }
                        else
                        {
                            int FiderType = cbTypeVL.SelectedIndex;
                            if (Mysql.AddNewFiderInBase(edFiderName.Text, FiderType, Config.Reses[cbRes.Text].Id, Config.Companies[cbCompany.Text].Id, (int)TP.Value, (int)SZO.Value, (int)NP.Value, (int)Population.Value, P_load_l.Value, P_load_z.Value))
                            {
                                this.DialogResult = DialogResult.Yes;
                            }
                            else
                            {
                                this.DialogResult = DialogResult.No;
                            }
                            this.Hide();
                        }
                    }
                    else //Если это редактирование фидера
                    {
                        if (Mysql.EditFiderFromBase(FiderId, edFiderName.Text, (int)TP.Value, (int)SZO.Value, (int)NP.Value, (int)Population.Value, P_load_l.Value, P_load_z.Value))
                        {
                            this.DialogResult = DialogResult.Yes;
                        }
                        else
                        {
                            this.DialogResult = DialogResult.No;
                        }
                        this.Hide();
                    }
                }
            }
        }