private void BatList_SelectionChanged(object sender, SelectionChangedEventArgs e) { BattaryData batData = (BattaryData)BatList.SelectedItem; if (batteryGrid.Items.Count > 0) { batteryGrid.Items.RemoveAt(0); } batteryGrid.Items.Add(batData); RaschetKolLineek(); }
public List <BattaryData> ReadData() { List <BattaryData> battaryDatas = new List <BattaryData>(); using (var workbook = new XLWorkbook()) { string workDirectory = Environment.CurrentDirectory; //Читает путь с файлом exe string folderData = "/data"; //Имя папки //В случае если папка data отсутствует создаем ее DirectoryInfo dirInfo = new DirectoryInfo(workDirectory + folderData); if (!dirInfo.Exists) { dirInfo.Create(); } string Name = "BatteryData"; //Запись файла string fileName = Name + ".xlsx"; //Имя файла string fullPathName = workDirectory + folderData + "/" + fileName; //Полный путь с именем файла try { var readWorkbook = new XLWorkbook(fullPathName); if (readWorkbook != null) { var worksheet = readWorkbook.Worksheet(1); int numOfRows = 1; foreach (var row in worksheet.Rows()) { int numOfCell = 1; if (numOfRows >= 3) { BattaryData bat = new BattaryData(); foreach (var cell in row.Cells()) { switch (numOfCell) { case 1: int id; if (int.TryParse(cell.Value.ToString(), out id)) { bat.ID = id; } else { bat.ID = 0; } break; case 2: bat.LegArt = cell.Value.ToString(); break; case 3: bat.OtherArt = cell.Value.ToString(); break; case 4: bat.Mark = cell.Value.ToString(); break; case 5: bat.Manufact = cell.Value.ToString(); break; case 6: bat.Descrip = cell.Value.ToString(); break; case 7: int cap; if (int.TryParse(cell.Value.ToString(), out cap)) //Проверка возможно ли пропарсить { bat.Capacity = cap; } else { bat.Capacity = 0; } break; case 8: int pow; if (int.TryParse(cell.Value.ToString(), out pow)) { bat.Power = pow; } else { bat.Power = 0; } break; case 9: int volt; if (int.TryParse(cell.Value.ToString(), out volt)) { bat.Voltage = volt; } else { bat.Voltage = 0; } break; case 10: double const2m; if (double.TryParse(cell.Value.ToString(), out const2m)) { bat.Const2m = const2m; } else { bat.Const2m = 0; } break; case 11: double const4m; if (double.TryParse(cell.Value.ToString(), out const4m)) { bat.Const4m = const4m; } else { bat.Const4m = 0; } break; case 12: double const5m; if (double.TryParse(cell.Value.ToString(), out const5m)) { bat.Const5m = const5m; } else { bat.Const5m = 0; } break; case 13: double const6m; if (double.TryParse(cell.Value.ToString(), out const6m)) { bat.Const6m = const6m; } else { bat.Const6m = 0; } break; case 14: double const8m; if (double.TryParse(cell.Value.ToString(), out const8m)) { bat.Const8m = const8m; } else { bat.Const8m = 0; } break; case 15: double const10m; if (double.TryParse(cell.Value.ToString(), out const10m)) { bat.Const10m = const10m; } else { bat.Const10m = 0; } break; case 16: double const15m; if (double.TryParse(cell.Value.ToString(), out const15m)) { bat.Const15m = const15m; } else { bat.Const15m = 0; } break; case 17: double const20m; if (double.TryParse(cell.Value.ToString(), out const20m)) { bat.Const20m = const20m; } else { bat.Const20m = 0; } break; case 18: double const30m; if (double.TryParse(cell.Value.ToString(), out const30m)) { bat.Const30m = const30m; } else { bat.Const30m = 0; } break; case 19: double const45m; if (double.TryParse(cell.Value.ToString(), out const45m)) { bat.Const45m = const45m; } else { bat.Const45m = 0; } break; case 20: double const60m; if (double.TryParse(cell.Value.ToString(), out const60m)) { bat.Const60m = const60m; } else { bat.Const60m = 0; } break; case 21: double const90m; if (double.TryParse(cell.Value.ToString(), out const90m)) { bat.Const90m = const90m; } else { bat.Const90m = 0; } break; case 22: bat.LegArt_Euro = cell.Value.ToString(); break; case 23: bat.OtherArt_Euro = cell.Value.ToString(); break; case 24: bat.Descrip_Euro = cell.Value.ToString(); break; default: break; } numOfCell++; } bat.FullDescrip = $"{bat.Mark}, {bat.Manufact}, {bat.Descrip}"; battaryDatas.Add(bat); } numOfRows++; } battaryDatas.RemoveAt(battaryDatas.Count - 1); } } catch (Exception) { ErrorWindow errorWindow = new ErrorWindow(); errorWindow.Show(); errorWindow.Topmost = true; errorWindow.ErrorLable.Content = "Невозможно прочитать файл данных АКБ"; } } return(battaryDatas); }
public void RaschetKolLineek() { int Pn; //Номинальная мощность, кВт if (!Int32.TryParse(PowerTextBox.Text, out Pn)) { Pn = 0; } int KPDakb; //КПД АКБ int NbatLin; //Количество батарей в линейке if (KPDLable.Content != null && nBatLinLable.Content != null) { if (!Int32.TryParse(KPDLable.Content.ToString(), out KPDakb)) { KPDakb = 0; } if (!Int32.TryParse(nBatLinLable.Content.ToString(), out NbatLin)) { NbatLin = 0; } } else { KPDakb = 0; NbatLin = 0; } BattaryData selectedBattaryObj = (BattaryData)BatList.SelectedItem; //Выбранный АКБ объект TimeSet selectedTimeObj = (TimeSet)TimeList.SelectedItem; //Выбранное время объект int selectedTime; //Выбранное время double dischargeHaract; //Разрядная характеристика if (selectedBattaryObj != null && selectedTimeObj != null) { selectedTime = selectedTimeObj.time; //Выбранное время switch (selectedTime) { case 2: dischargeHaract = selectedBattaryObj.Const2m; break; case 4: dischargeHaract = selectedBattaryObj.Const4m; break; case 5: dischargeHaract = selectedBattaryObj.Const5m; break; case 6: dischargeHaract = selectedBattaryObj.Const6m; break; case 8: dischargeHaract = selectedBattaryObj.Const8m; break; case 10: dischargeHaract = selectedBattaryObj.Const10m; break; case 15: dischargeHaract = selectedBattaryObj.Const15m; break; case 20: dischargeHaract = selectedBattaryObj.Const20m; break; case 30: dischargeHaract = selectedBattaryObj.Const30m; break; case 45: dischargeHaract = selectedBattaryObj.Const45m; break; case 60: dischargeHaract = selectedBattaryObj.Const60m; break; case 90: dischargeHaract = selectedBattaryObj.Const90m; break; default: dischargeHaract = 1; break; } } else { selectedTime = 0; dischargeHaract = 0; } float Pbat; float Pelem; double Nlin; //Количество линеек int Nlinround; //Количество линее округленное if (Pn > 0 && KPDakb > 0 && selectedBattaryObj != null && selectedTime > 0 && dischargeHaract > 0) { Pbat = (float)Pn * 100 / KPDakb; //Мощность батареи, кВт Pelem = Pbat * 1000 / (NbatLin * 6); //Мощность элемента в батарее, Вт Nlin = Pelem / dischargeHaract; Nlinround = (int)Math.Ceiling(Nlin); numOfLin.Content = Nlinround.ToString(); numOfAKB.Content = (Nlinround * NbatLin).ToString(); } else { numOfLin.Content = "Не определено"; numOfAKB.Content = "Не определено"; } }