コード例 #1
0
        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;
            }
        }
コード例 #2
0
        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;
            }
        }
コード例 #3
0
        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;
            }
        }
コード例 #4
0
        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;
            }
        }