protected void FillHeader(IParsedData data) { var cellNum = 2; //Запись заголовка SetCellValue(4, cellNum, data.Header.ClientField); SetCellValue(5, cellNum, data.Header.FieldPadWellField); SetCellValue(6, cellNum, data.Header.LocationField); cellNum = 8; SetCellValue(4, cellNum, data.Header.DdEngineerField); SetCellValue(5, cellNum, data.Header.DateField); }
public bool Parse(byte[] receivedData, int receivedDataLength, out IParsedData parsedData) { var index = 0; //packet baslangici 250 ise 1 252 ise 2 degeri alir. var p = 0; var buffer = new byte[8200]; var bufferIndex = 0; //bitis paketinin indeksi var t = 0; for (var i = 0; i < receivedDataLength; i++) { if (receivedData.Take(5).Any(s => s == packet_header_pre)) { i = 5; p = 1; } else if (receivedData.Skip(5).Take(5).Any(s => s == packet_header_pre_online)) { i = 10; p = 2; } if (p == 1) { if (receivedData[i] == packet_header_post) { t++; if (t == 5) { } else { buffer[bufferIndex] = receivedData[i]; bufferIndex++; } } t = 0; buffer[bufferIndex] = receivedData[i]; bufferIndex++; } else { } } parsedData = new ParsedData { MessageType = GetMessageType(receivedData[index]), DataCount = receivedData[index + 1] }; index = 9; for (var i = 0; i < parsedData.DataCount; i++) { parsedData.MobileData.Add(new MobileData { MobileNodeId = SwapByteOrder(BitConverter.ToUInt16(receivedData, index)), Distance = SwapByteOrder(BitConverter.ToUInt16(receivedData, index + 2)), Power = Convert.ToByte(receivedData[index + 5] & 0x0f), ReaderNodeId = SwapByteOrder(BitConverter.ToUInt16(receivedData, index + 6)) }); index += 12; } return(true); }
public override void PassDataToExcel(IParsedData data) { if (string.IsNullOrEmpty(TemplateFileName)) { return; } var filePath = $@"{Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)}\misc\{TemplateFileName}"; try { using ( var file = new FileStream(filePath, FileMode.Open, FileAccess.Read)) { Book = new XSSFWorkbook(file); } Sheet = Book.GetSheetAt(0); Book.SetSheetName(Book.GetSheetIndex(Sheet), $"{data.Name}_{data.SerialNumber}"); //Заполнение заголовка (метод прописан в ExcelProcessor.cs) FillHeader(data); //Номер ячейки (в контексте таблицы - столбца), в которую вставляются данные (нумерация ячеек в коде начинается с 0) //Поэтому от номера строки и столбца нужно отнимать 1 var cellNum = 5; //SerialNumber SetCellValue(14, cellNum, data.SerialNumber); //соответствует 22 строке в шаблоне и т.д. //L var inches = InchesValueRetriever.GetInchesValue(data.Length); SetCellValue(19, cellNum, LengthConverter.InchesToMeters(inches).ToString("0.000")); //Od1 SetCellValue(20, cellNum, data.ConnectionOne.Od); //ID SetCellValue(21, cellNum, data.ConnectionTwo.Od); //Top SetCellValue(16, cellNum, data.ConnectionOne.TreadSize); //Bottom SetCellValue(17, cellNum, data.ConnectionTwo.TreadSize); //соответствует 27 строке в шаблоне //var totalFishingDiagram = // TotalFishingDiagramFile.GetTotalFishingDiagramFileStream( // $@"{Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)}\out\Field_Pad_Well_FishingDiagram_{ // SessionStartTime}.xlsx"); //var totalBook = new XSSFWorkbook(totalFishingDiagram); string fileName = $@"{Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)}\work\{ data.Name}_{data.SerialNumber}_FishingDiagram_{DateTime.Now.ToString("yy-MM-dd-HH-mm-ss")}.xlsx"; //Сохранение изменённого файла using ( var file = new FileStream(fileName, FileMode.CreateNew, FileAccess.Write)) { Book.Write(file); } } catch (Exception e) { MessageBox.Show($"I have a bad feeling about this: {e.Message}", "Viva La Resistance!!!", MessageBoxButton.OK, MessageBoxImage.Error); return; } }
public override void PassDataToExcel(IParsedData data) { var crossoverData = (CrossoverSubParsedData)data; var crossoverType = crossoverData.Type; switch (crossoverType) { case CrossoverType.Type1: TemplateFileName = "Crossover Sub Type 1 Diagram.xlsx"; break; case CrossoverType.Type2: TemplateFileName = "Crossover Sub Type 2 Diagram.xlsx"; break; case CrossoverType.Type3: TemplateFileName = "Crossover Sub Type 3 Diagram.xlsx"; break; case CrossoverType.Type4: TemplateFileName = "Crossover Sub Type 4 Diagram.xlsx"; break; case CrossoverType.NotDefined: MessageBox.Show("Crossover Sub Type Not Defined", "Information message", MessageBoxButton.OK, MessageBoxImage.Asterisk); return; } if (string.IsNullOrEmpty(TemplateFileName)) { return; } var filePath = $@"{Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)}\misc\{TemplateFileName}"; try { using ( var file = new FileStream(filePath, FileMode.Open, FileAccess.Read)) { _xlsBook = new XSSFWorkbook(file); } _xlsBook.SetForceFormulaRecalculation(true); Sheet = _xlsBook.GetSheetAt(0); Sheet = _xlsBook.GetSheetAt(0); _xlsBook.SetSheetName(_xlsBook.GetSheetIndex(Sheet), $"{data.Name}_{data.SerialNumber}"); //Запись заголовка FillHeader(crossoverData); //cellNum - Номер ячейки (в контексте таблицы - столбца), в которую вставляются данные var cellNum = 5; //SerialNumber SetCellValue(14, cellNum, crossoverData.SerialNumber); //TOP SetCellValue(16, cellNum, crossoverData.ConnectionOne.TreadSize); //BOT SetCellValue(17, cellNum, crossoverData.ConnectionTwo.TreadSize); //L var inches = InchesValueRetriever.GetInchesValue(crossoverData.Length); SetCellValue(19, cellNum, inches.Equals(0) ? string.Empty : LengthConverter.InchesToMeters(inches).ToString("0.000")); switch (crossoverType) { case CrossoverType.Type1: //OD SetCellValue(20, cellNum, crossoverData.ConnectionOne.Od); //ID SetCellValue(21, cellNum, crossoverData.ConnectionTwo.Id); break; case CrossoverType.Type2: //ID1 SetCellValue(20, cellNum, crossoverData.ConnectionOne.Id); //ID2 SetCellValue(21, cellNum, crossoverData.ConnectionTwo.Id); break; case CrossoverType.Type3: case CrossoverType.Type4: //FishingNeck SetCellValue(20, cellNum, crossoverData.FishingNeck); //Od1 SetCellValue(21, cellNum, crossoverData.ConnectionOne.Od); //ID2 SetCellValue(23, cellNum, crossoverData.ConnectionTwo.Id); //Od2 SetCellValue(24, cellNum, crossoverData.ConnectionTwo.Od); break; } string fileName = $@"{Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)}\work\{ crossoverData.Name}_{crossoverData.SerialNumber}_FishingDiagram_{DateTime.Now.ToString("yy-MM-dd-HH-mm-s")}.xlsx"; //Сохранение изменённого файла using ( var file = new FileStream(fileName, FileMode.Create, FileAccess.Write)) { _xlsBook.Write(file); } } catch (Exception e) { MessageBox.Show($"Something is wrong: {e.Message}", "Viva La Resistance!!!", MessageBoxButton.OK, MessageBoxImage.Error); return; } }
public override void PassDataToExcel(IParsedData data) { var stabilizerData = (IStabilizerParsedData)data; //... (прдолжение) чтобы использовать поля из StabilizerParsedData, необходимо вот так вот //как здесь выполнить приведение к призводному типу. Просто небольшой нюанс, если вы будете делать свои версии класса ParsedData if (string.IsNullOrEmpty(TemplateFileName)) { return; } var filePath = $@"{Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)}\misc\{TemplateFileName}"; try { using ( var file = new FileStream(filePath, FileMode.Open, FileAccess.Read)) { _xlsBook = new XSSFWorkbook(file); } _xlsBook.SetForceFormulaRecalculation(true); Sheet = _xlsBook.GetSheetAt(0); Sheet = _xlsBook.GetSheetAt(0); _xlsBook.SetSheetName(_xlsBook.GetSheetIndex(Sheet), $"{data.Name}_{data.SerialNumber}"); //Запись заголовка FillHeader(stabilizerData); //cellNum - Номер ячейки (в контексте таблицы - столбца), в которую вставляются данные var cellNum = 6; //SerialNumber SetCellValue(14, cellNum, stabilizerData.SerialNumber); //TOP SetCellValue(17, cellNum, stabilizerData.ConnectionOne.TreadSize); //BOT SetCellValue(18, cellNum, stabilizerData.ConnectionTwo.TreadSize); //L var inches = InchesValueRetriever.GetInchesValue(stabilizerData.Length); SetCellValue(22, cellNum, LengthConverter.InchesToMeters(inches).ToString("0.000")); //L1 inches = InchesValueRetriever.GetInchesValue(stabilizerData.FishingNeckTongSpace); SetCellValue(23, cellNum, LengthConverter.InchesToMeters(inches).ToString("0.000")); //OD SetCellValue(29, cellNum, stabilizerData.ConnectionOne.Od); //ID SetCellValue(30, cellNum, stabilizerData.ConnectionTwo.Od); //MaxOD SetCellValue(31, cellNum, stabilizerData.StabilizerOd); //BladeLength inches = InchesValueRetriever.GetInchesValue(stabilizerData.LobeLength); SetCellValue(32, cellNum, LengthConverter.InchesToMeters(inches).ToString("0.000")); //BladeWidth SetCellValue(34, cellNum, stabilizerData.LobeWidth); string fileName = $@"{Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)}\work\{ stabilizerData.Name}_{stabilizerData.SerialNumber}_FishingDiagram_{ DateTime.Now.ToString("yy-MM-dd-HH-mm-s")}.xlsx"; //Сохранение изменённого файла using ( var file = new FileStream(fileName, FileMode.Create, FileAccess.Write)) { _xlsBook.Write(file); } } catch (Exception e) { MessageBox.Show($"Something is wrong: {e.Message}", "Viva La Resistance!!!", MessageBoxButton.OK, MessageBoxImage.Error); return; } }
public void ParseXML(XmlReader xmlReader, IParsedData parsedData) { string prop = ""; try { while (xmlReader.Read() == true) { XmlNodeType nType = xmlReader.NodeType; prop = ""; prop += "NodeType: " + nType.ToString() + "\r\n"; prop += "LocalName: " + xmlReader.LocalName + "\r\n"; prop += "Depth: " + Convert.ToString(xmlReader.Depth) + "\r\n"; prop += "Name: " + xmlReader.Name + "\r\n"; if (XmlNodeType.Element == nType) { parsedData.AddNode(xmlReader.Name, xmlReader.Depth); } if (xmlReader.HasValue == true) { Type valueType = xmlReader.ValueType; prop += "ValueType: " + valueType.ToString() + "\r\n"; prop += "Value: " + xmlReader.Value + "\r\n"; parsedData.SetValue(xmlReader.Value); } //属性がある場合 if (xmlReader.HasAttributes == true) { for (int i = 0; i < xmlReader.AttributeCount; i++) { xmlReader.MoveToAttribute(i); prop += "Attribute Name: " + xmlReader.Name + "\r\n"; if (xmlReader.HasValue == true) { Type valueType = xmlReader.ValueType; prop += "ValueType: " + valueType.ToString() + "\r\n"; prop += "Attribute Value: " + xmlReader.Value + "\r\n"; parsedData.AddAttribute(xmlReader.Name, xmlReader.Value); } } xmlReader.MoveToElement(); } //Debug.Log(prop); } } catch (Exception e) { Debug.Log("Error: " + e.StackTrace); } finally { if (xmlReader != null) { xmlReader.Close(); } } }
public void ReadXML(IParsedData parsedData) { m_xmlReader = LoadPaht(); ParseXML(m_xmlReader, parsedData); }
public override void PassDataToExcel(IParsedData data) { if (string.IsNullOrEmpty(TemplateFileName)) { return; } var filePath = $@"{Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)}\misc\{TemplateFileName}"; try { using ( var file = new FileStream(filePath, FileMode.Open, FileAccess.Read)) { Book = new XSSFWorkbook(file); } Sheet = Book.GetSheetAt(0); Book.SetSheetName(Book.GetSheetIndex(Sheet), $"{data.Name}_{data.SerialNumber}"); var nmdcData = new NmdcFData(); if (!nmdcData.Tools.ContainsKey(data.SerialNumber)) { MessageBox.Show("No such NMDC-F in library", "Information", MessageBoxButton.OK, MessageBoxImage.Asterisk); return; } var nmdcTool = nmdcData.Tools[data.SerialNumber]; var inspectionLength = LengthConverter.InchesToMeters(InchesValueRetriever.GetInchesValue(data.Length)); var arrayLength = Convert.ToSingle(nmdcTool.L, CultureInfo.InvariantCulture); var difference = Math.Abs(inspectionLength - arrayLength); if (difference > 0.025f) { MessageBox.Show($"Collar length {inspectionLength} doesn't match. Should be about {arrayLength}. Difference is {difference}. Prepare fishing diagram manually.", "Information", MessageBoxButton.OK, MessageBoxImage.Asterisk); return; } //Заполнение заголовка (сам метод внизу) FillHeader(data); //Номер ячейки (в контексте таблицы - столбца), в которую вставляются данные (нумерация ячеек в коде начинается с 0) //Поэтому от номера строки и столбца нужно отнимать 1 var cellNum = 4; //L SetCellValue(12, cellNum, inspectionLength.ToString("0.000")); //L12 SetCellValue(15, cellNum, nmdcTool.L12); //L11 SetCellValue(16, cellNum, nmdcTool.L11); //L10 SetCellValue(20, cellNum, nmdcTool.L10); //L9 SetCellValue(21, cellNum, nmdcTool.L9); //L8 SetCellValue(24, cellNum, nmdcTool.L8); //L7 SetCellValue(25, cellNum, nmdcTool.L7); //L6 SetCellValue(29, cellNum, nmdcTool.L6); //L5 SetCellValue(30, cellNum, nmdcTool.L5); //L4 SetCellValue(33, cellNum, nmdcTool.L4); //L3 SetCellValue(34, cellNum, nmdcTool.L3); //L2 SetCellValue(38, cellNum, nmdcTool.L2); //L1 SetCellValue(39, cellNum, nmdcTool.L1); cellNum = 8; //SerialNumber SetCellValue(12, cellNum, data.SerialNumber); //соответствует 22 строке в шаблоне и т.д. //OD SetCellValue(13, cellNum, data.ConnectionOne.Od); //ID SetCellValue(14, cellNum, data.ConnectionTwo.Id); //Od6 SetCellValue(19, cellNum, nmdcTool.Od6); //Od5 SetCellValue(20, cellNum, nmdcTool.Od5); //Od4 SetCellValue(21, cellNum, nmdcTool.Od4); //Od3 SetCellValue(22, cellNum, nmdcTool.Od3); //Od2 SetCellValue(23, cellNum, nmdcTool.Od2); //Od1 SetCellValue(24, cellNum, nmdcTool.Od1); string fileName = $@"{Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)}\work\{ data.Name}_{data.SerialNumber}_FishingDiagram_{DateTime.Now.ToString("yy-MM-dd-HH-mm-ss")}.xlsx"; //Сохранение изменённого файла using ( var file = new FileStream(fileName, FileMode.CreateNew, FileAccess.Write)) { Book.Write(file); } } catch (Exception e) { MessageBox.Show(e.Message, "I have a bad feeling about this", MessageBoxButton.OK, MessageBoxImage.Error); return; } }