public bool GetCriterion(MSExcel._Workbook _excelDoc, int sheetIndex, int columnIndex, bool writeCriToData, out string criText, out KVCriterion crit) { //确定数据的规范 KVCriterion dataCri = KVCriterion.Null; string text = ((MSExcel._Worksheet)_excelDoc.Sheets[sheetIndex]).Name; if (text != "标准模板") { if (text == "统计") { text = GetText(_excelDoc, sheetIndex, new ExcelPosition(5, columnIndex)); if (text.EndsWith("kV")) { text = text.Replace("kV", "").Trim(); switch (text) { case "40": dataCri = KVCriterion.RQR2_40; break; case "50": dataCri = KVCriterion.RQR3_50; break; case "60": dataCri = KVCriterion.RQR4_60; break; case "70": dataCri = KVCriterion.RQR5_70; break; case "80": dataCri = KVCriterion.RQR6_80; break; case "90": dataCri = KVCriterion.RQR7_90; break; case "100": dataCri = KVCriterion.RQR8_100; break; case "120": dataCri = KVCriterion.RQR9_120; break; case "140": dataCri = KVCriterion.RQR_140; break; case "150": dataCri = KVCriterion.RQR10_150; break; } } } else { text = GetText(_excelDoc, sheetIndex, new ExcelPosition(13, columnIndex)); if (text.Contains("140")) { dataCri = KVCriterion.RQR_140; } else { if (text.Contains("kV")) { string text1 = text.Split(new string[] { "kV" }, StringSplitOptions.RemoveEmptyEntries)[0].Trim(); if (text1.Contains(".")) { text1 = text1.Substring(0, text1.LastIndexOf('.')); } int charindex = -1; for (int i = 0; i < text1.Length; i++) { if (!DataUtility.DataUtility.IsCharNumber(text1[i])) { charindex = i; } } if (charindex > -1) { text1 = text1.Substring(charindex + 1); } //GetText(_excelDoc, sheetIndex, DataUtility.DataUtility.PositionString(14, columnIndex), out checkClear); switch (text1) { case "40": dataCri = KVCriterion.RQR2_40; break; case "50": dataCri = KVCriterion.RQR3_50; break; case "60": dataCri = KVCriterion.RQR4_60; break; case "70": dataCri = KVCriterion.RQR5_70; break; case "80": dataCri = KVCriterion.RQR6_80; break; case "90": dataCri = KVCriterion.RQR7_90; break; case "100": dataCri = KVCriterion.RQR8_100; break; case "120": dataCri = KVCriterion.RQR9_120; break; case "140": dataCri = KVCriterion.RQR_140; break; case "150": dataCri = KVCriterion.RQR10_150; break; } } else { LogHelper.AddException("无法识别的规范", true); } } } } criText = text; crit = dataCri; if (crit != KVCriterion.Null) { if (writeCriToData) { WriteCriterionToData(_excelDoc, sheetIndex, crit, columnIndex); } return true; } else { return false; } }
public void WriteCriterionToData(MSExcel._Workbook _excelDoc, int sheetIndex, KVCriterion cri, int columnIndex) { string volText = cri.Voltage; string ppvText = cri.PPV; if (ppvText != "") { WriteValue(_excelDoc, sheetIndex, new ExcelPosition(14, columnIndex), ppvText); } }
/// <summary> /// 计算长期稳定性 /// </summary> /// <param name="sheetIndex"></param> /// <param name="row"></param> /// <param name="col"></param> /// <param name="range"></param> /// <param name="success"></param> public void StablizeOneKV(MSExcel._Workbook _excelDoc, int sheetIndex, KVCriterion crit, int row, int col, out string range, out bool success) { try { ExcelPosition pos1 = new ExcelPosition(row - 1, col - 2); ExcelPosition pos2 = new ExcelPosition(row, col - 2); ExcelPosition pos = new ExcelPosition(row, col); MSExcel.Range _excelRge = GetRange(_excelDoc, sheetIndex, pos); if (HadNumber(_excelDoc, sheetIndex, pos2) && HadNumber(_excelDoc, sheetIndex, pos1)) { if (crit.Index > 2) { _excelRge.Formula = "=(" + pos2.PositionString + "-" + pos1.PositionString + ")/" + pos1.PositionString; } else { _excelRge.Formula = "=" + pos1.PositionString + "-" + pos2.PositionString; } _excelRge.NumberFormatLocal = "0.0%"; _excelDoc.Save(); } if (_excelRge != null && _excelRge.Value2 != null) { range = _excelRge.Value2.ToString(); } else { range = GetText(_excelDoc, sheetIndex, pos); } success = true; } catch (System.Exception ex) { success = false; range = null; Log.LogHelper.AddLog(@"异常45", ex.Message, true); Log.LogHelper.AddLog(@"异常46", " " + ex.TargetSite.ToString(), true); } }
public void WriteCriterionToStatistic(MSExcel._Workbook _excelDoc, int sheetIndex, KVCriterion cri, int columnIndex) { string volText = ""; string halfLayerText = ""; string title2 = @"相对固有误差"; switch (cri.Voltage) { case "40kV": title2 = @"固有误差"; volText = @"40kV"; halfLayerText = @"1.42"; break; case "50kV": title2 = @"固有误差"; volText = @"50kV"; halfLayerText = @"1.78"; break; case "60kV": volText = @"60kV"; halfLayerText = @"2.19"; break; case "70kV": volText = @"70kV"; halfLayerText = @"2.58"; break; case "80kV": volText = @"80kV"; halfLayerText = @"3.01"; break; case "90kV": volText = @"90kV"; halfLayerText = @"3.48"; break; case "100kV": volText = @"100kV"; halfLayerText = @"3.97"; break; case "120kV": volText = @"120kV"; halfLayerText = @"5.00"; break; case "140kV": volText = @"140kV"; halfLayerText = ""; break; case "150kV": volText = @"150kV"; halfLayerText = @"6.57"; break; default: LogHelper.AddException("在统计页写入第" + columnIndex + "列的数据时遇到无法识别的规范:" + cri.Voltage, true); break; } if (volText != "") { WriteValue(_excelDoc, sheetIndex, new ExcelPosition(5, columnIndex), volText); } if (halfLayerText != "") { WriteValue(_excelDoc, sheetIndex, new ExcelPosition(6, columnIndex), halfLayerText); } WriteValue(_excelDoc, sheetIndex, new ExcelPosition(7, columnIndex), @"平均值"); WriteValue(_excelDoc, sheetIndex, new ExcelPosition(7, columnIndex + 1), title2); WriteValue(_excelDoc, sheetIndex, new ExcelPosition(7, columnIndex + 2), @"年稳定性"); }