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