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); }
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(); } } } }