private void btnAddNewMaster_Click(object sender, EventArgs e) { SetupForms.AddNewMaster fNewMaster = new SetupForms.AddNewMaster(); fNewMaster.cbCompany.DataSource = Config.Companies.Values.Where(i => i.Id == Config.LoginUser.CompanyId).Select(p => p.Name).ToList(); fNewMaster.cbRes.Items.Add(Config.OtherWorkersName); fNewMaster.cbRes.SelectedIndex = 0; fNewMaster.ShowHidePrinadl(); fNewMaster.ShowDialog(); if (fNewMaster.DialogResult == DialogResult.Yes) { if (Mysql.AddNewMasterInBase(fNewMaster.edFIO.Text, fNewMaster.edDol.Text, fNewMaster.edTel.Text, Config.OtherWorkersId, Config.Companies[fNewMaster.cbCompany.Text].Id, Config.Filials[fNewMaster.cbOtherPrinandl.Text].Id)) { MessageBox.Show("Новый работник успешно внесён в базу."); LoadMasters(Config.OtherWorkersId); cbMasters.Text = fNewMaster.edFIO.Text; } else { MessageBox.Show("При добавлении нового работника возникла ошибка. Обратитесь к разработчику."); } } }
public bool ImportMastersFile() { 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 fio = worksheet.Cells[i, 1].Text; string dol = worksheet.Cells[i, 2].Text; string tel = worksheet.Cells[i, 3].Text; if ((fio == "") || (dol == "") || (tel == "")) { break; } if (Mysql.FindMasterInBase(fio)) { string addition = "(число)"; for (int add = 1; add < 99999; add++) { addition = "(" + add.ToString() + ")"; if (!Mysql.FindMasterInBase(fio + addition)) { break; } } MessageBox.Show("Работник " + fio + " уже содержится в базе.\nВ базу " + fio + " будет импортирован под именем - " + fio + addition + "\nВ Форму 4 данный работник будет выгружен без дополнения '" + addition + "'"); fio += addition; if (!Mysql.AddNewMasterInBase(fio, dol, tel, ResId, Config.Companies[cbCompany.Text].Id)) { MessageBox.Show("Ошибка при импорте работника - " + fio); break; } else { ImportCount++; } } else { if (!Mysql.AddNewMasterInBase(fio, dol, tel, ResId, Config.Companies[cbCompany.Text].Id)) { MessageBox.Show("Ошибка при импорте работника - " + fio); 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); }