DD.WellWorkover.Cloud/ConsoleApp1/Program.cs

525 lines
28 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using AsbCloudApp.Data.DailyReportModel;
using AsbCloudInfrastructure.EfCache;
using ClosedXML.Excel;
using System;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
// use ServiceFactory to make services
static void Main(/*string[] args*/)
{
var block = new DailyReportHeadDto()
{
AzimuthAngle=12,
WellName= "WellName",
ClusterName= "clusterName",
Customer="customer",
Contractor="Contractor",
ReportDate = DateTime.Now,
WellDepthIntervalFinishDate= 27.5,
WellDepthIntervalStartDate= 26.5,
BottomholeDepth= 66.6
};
var block2 = new DailyReportBhaDto()
{
BHADescription="sadasdasdasdasdasdjlaskjdaksjdlasdlalskdklj"
};
var block3 = new DailyReportSaubDto();
var ms = MakeReportFromBlocks(block,block3);
//File.Create("", MakeReportFromBlocks(block));
using var file = new FileStream("file.xlsx", FileMode.Create, System.IO.FileAccess.Write);
byte[] bytes = new byte[ms.Length];
ms.Read(bytes, 0, (int)ms.Length);
file.Write(bytes, 0, bytes.Length);
ms.Close();
}
public static Stream MakeReportFromBlocks(DailyReportHeadDto blockHead, DailyReportSaubDto blockD)
{
using var workbook = new XLWorkbook();
FillSheet6blocks(workbook, blockHead, blockD);
MemoryStream memoryStream = new MemoryStream();
workbook.SaveAs(memoryStream, new SaveOptions { });
memoryStream.Seek(0, SeekOrigin.Begin);
return memoryStream;
}
private static String converteCellCoordinate(int row, bool isCaps, int column)
{
var c = (Char)((isCaps ? 65 : 97) + (column - 1));
string convertColumn = c.ToString();
return $"{convertColumn}{row}";
}
private static string FormulaMechanicalSpeed((int row, int col) tuple)
{
return $"=IF({converteCellCoordinate(tuple.row,true,tuple.col-2)}>0," +
$"{converteCellCoordinate(tuple.row,true,tuple.col-4)}/{converteCellCoordinate(tuple.row,true,tuple.col-2)},0)";
}
private static string FormulaDrillingWatch((int row, int col) tuple)
{
return $"=IF({converteCellCoordinate(tuple.row - 8,true,tuple.col)}+" +
$"{converteCellCoordinate(tuple.row - 4,true,tuple.col)}";
}
private static string FormulaSinking((int row, int col) tuple)
{
return $"=IF(({converteCellCoordinate(tuple.row - 4,true,tuple.col)}+{converteCellCoordinate(tuple.row - 8,true,tuple.col)})" +
$"<>({converteCellCoordinate(tuple.row - 54,true,tuple.col + 6)}-{converteCellCoordinate(tuple.row - 54,true,tuple.col + 4)}),\"ОШИБКА\"" +
$",{converteCellCoordinate(tuple.row - 4,true,tuple.col)}+{converteCellCoordinate(tuple.row - 8,true,tuple.col)})";
//return $"=IF({converteCellCoordinate(tuple.row - 8,true,tuple.col)}+" +
// $"{converteCellCoordinate(tuple.row - 4,true,tuple.col)}";
}
public static void FillSheet6blocks(XLWorkbook workbook, DailyReportHeadDto blockHead, DailyReportSaubDto blockD)
{
var sheet = workbook.Worksheets.Add(blockHead.ReportDate.ToString("dd.MM.yyyy"));
//sheet.Name = blockHead.ReportDate.ToString("dd.MM.yyyy");
var tuple = (row: 3, column: 3);
sheet.Style.Font.FontName = "TimesNewRoman";
sheet.Style.Font.FontSize = 10;
tuple = (AddBlockHead1(sheet, blockHead, (tuple.row, tuple.column)).row, AddBlockHead1(sheet, blockHead, (tuple.row, tuple.column)).column);
AddBlockBha(sheet, blockD, tuple);
//sheet.Columns().AdjustToContents(8,9);
//sheet.Rows().AdjustToContents(3,21);
}
//
private static IXLStyle SetBorder(IXLStyle style)
{
style.Border.RightBorder = XLBorderStyleValues.Thin;
style.Border.LeftBorder = XLBorderStyleValues.Thin;
style.Border.TopBorder = XLBorderStyleValues.Thin;
style.Border.BottomBorder = XLBorderStyleValues.Thin;
style.Border.InsideBorder = XLBorderStyleValues.Thin;
return style;
}
private static IXLCell SetDateTime(IXLCell cell)
{
cell.DataType = XLDataType.DateTime;
cell.Style.DateFormat.Format = "DD.MM.YYYY HH:MM:SS";
return cell;
}
private static IXLCell SetNumber(IXLCell cell)
{
cell.DataType = XLDataType.Number;
cell.Style.NumberFormat.Format = "0.00";
return cell;
}
private static IXLCell SetCell(IXLRow row, int colunm, object value, int maxChartsToWrap = 88)
{
var cell = row.Cell(colunm);
cell.Value = value;
SetBorder(cell.Style);
cell.Style.Alignment.WrapText = true;
if (value is string valueString && valueString.Length > maxChartsToWrap)
{
var baseHeight = row.Height;
row.Height = 0.82d * baseHeight * Math.Ceiling(1d + valueString.Length / maxChartsToWrap);
}
if (value is DateTime)
{
SetDateTime(cell);
}
else if (value is IFormattable)
{
SetNumber(cell);
}
return cell;
}
private static (int row, int column) AddBlockHead1(IXLWorksheet sheet, DailyReportHeadDto blockDto, (int row, int column) tupleStart)
{
var tuple = (row: tupleStart.row, column: tupleStart.column);
sheet.Cell(tuple.row, tuple.column).Value =
$"Суточная сводка бурения скважины: {blockDto.WellName}, куст: {blockDto.ClusterName}";
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge();
tuple.row += 1;
sheet.Cell(tuple.row, tuple.column).Value =
$"Заказчик: {blockDto.Customer}";
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge();
tuple.row += 1;
sheet.Cell(tuple.row, tuple.column).Value =
$"Подрядчик: {blockDto.Contractor}";
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge();
tuple.row += 2;
//7,3
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, "Отчетный период");
tuple.column += 4;
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge();
sheet.Cell(tuple.row, tuple.column+3).Style.Border.RightBorder = XLBorderStyleValues.Thin;
SetCell(sheet.Row(tuple.row),tuple.column, "Забой за отчетный период, м");
tuple.column = tupleStart.column;
tuple.row += 1;
//8,3
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, "От (дата, время)");
tuple.column += 2; //8,5
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, "До (дата, время)");
tuple.column += 2; //8,7
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, "От");
tuple.column += 2; //8,9
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, "До");
sheet.Cell(tuple.row, tuple.column+1).Style.Border.RightBorder = XLBorderStyleValues.Thin;
tuple.column = tupleStart.column;
tuple.row += 1; //9,3
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.ReportDate}");
tuple.column += 2;
//согласно формуле в шаблоне - ячейка С9
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, "");
sheet.Cell(tuple.row,tuple.column).FormulaA1 = $"={converteCellCoordinate(tuple.row, true, tuple.column - 2)}-1";
SetDateTime(sheet.Cell(tuple.row,tuple.column));
tuple.column += 2;
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.WellDepthIntervalStartDate}");
tuple.column += 2;
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.WellDepthIntervalFinishDate}");
tuple.column = tupleStart.column;
tuple.row += 2; //11,3
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge().Style.Border.RightBorder = XLBorderStyleValues.Thin;
SetCell(sheet.Row(tuple.row),tuple.column, "Данные по траектории скважины на конец суток");
tuple.column = tupleStart.column;
tuple.row += 1;//12
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, "Глубина по стволу");
tuple.column += 2; //12,5
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, "Глубина по вертикали");
tuple.column += 2; //12,7
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, "Зенитный угол");
tuple.column += 2; //12,9
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge().Style.Border.RightBorder = XLBorderStyleValues.Thin;
SetCell(sheet.Row(tuple.row),tuple.column, "Азимут");
tuple.column = tupleStart.column;
tuple.row += 1; //13,3
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.BottomholeDepth}");
tuple.column += 2;
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.VerticalDepth}");
tuple.column += 2;
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.ZenithAngle}");
tuple.column += 2;
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge().Style.Border.RightBorder = XLBorderStyleValues.Thin;
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.AzimuthAngle}");
tuple.column = tupleStart.column;
tuple.row += 2; //15,3
sheet.Cell(tuple.row, tuple.column).Value = "Бурильщик 1 смена";
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
tuple.column += 2;
sheet.Cell(tuple.row, tuple.column).Value = $"{blockDto.FirstDriller}";
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
tuple.row += 1;
tuple.column = tupleStart.column;
sheet.Cell(tuple.row, tuple.column).Value = "Бурильщик 2 смена";
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
tuple.column += 2;
sheet.Cell(tuple.row, tuple.column).Value = $"{blockDto.SecondDriller}";
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
tuple.row += 2;
tuple.column = tupleStart.column;
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge();
SetCell(sheet.Row(tuple.row),tuple.column,"Работа модулей САУБ:");
tuple.column += 3;
SetCell(sheet.Row(tuple.row),tuple.column,"Часов:");
tuple.column += 1;
SetCell(sheet.Row(tuple.row),tuple.column, "Метров:").Style.Border.RightBorder = XLBorderStyleValues.Thin;
tuple.row += 1;
tuple.column = tupleStart.column;
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge();
SetCell(sheet.Row(tuple.row),tuple.column,"АПД (автоматическая подача долота), ч/м:");
tuple.column += 3;
SetCell(sheet.Row(tuple.row),tuple.column,$"{blockDto.WorkTimeSAUB}");
tuple.column += 1;
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.PenetrationSAUB}").Style.Border.RightBorder = XLBorderStyleValues.Thin;
tuple.row += 1;
tuple.column = tupleStart.column;
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge();
SetCell(sheet.Row(tuple.row),tuple.column,"Спин Мастер (осцилляция),ч/м:");
tuple.column += 3;
SetCell(sheet.Row(tuple.row),tuple.column,$"{blockDto.WorkTimeSpinMaster}");
tuple.column += 1;
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.PenetrationSpinMaster}").Style.Border.RightBorder = XLBorderStyleValues.Thin;
tuple.row += 1;
tuple.column = tupleStart.column;
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge();
SetCell(sheet.Row(tuple.row),tuple.column,"Торк Мастер (демпфирование), ч/:");
tuple.column += 3;
SetCell(sheet.Row(tuple.row),tuple.column,$"{blockDto.WorkTimeTorkMaster}");
tuple.column += 1;
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.PenetrationTorkMaster}").Style.Border.RightBorder = XLBorderStyleValues.Thin;
tuple.row += 1;
tuple.column = tupleStart.column;
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge();
SetCell(sheet.Row(tuple.row),tuple.column,"МСЕ, колличество запусков, раз:");
tuple.column += 3;
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge().Style.Border.RightBorder = XLBorderStyleValues.Thin;
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.CountLaunchesMSE}");
tuple.column+=2;
return tuple;
}
private static (int row, int column) AddBlockBha(IXLWorksheet sheet, DailyReportSaubDto blockDto, (int row, int column) tupleStart)
{
tupleStart.row += 2;
tupleStart.column = 3;
var tuple = (row: tupleStart.row, column: tupleStart.column);
sheet.Range(tuple.row, tuple.column, tuple.row,tuple.column + 7).Merge()
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
SetCell(sheet.Row(tuple.row),tuple.column, $"Бурение в роторе : {blockDto.RotorDrillingModes}");
tuple.row+=1;
sheet.Range(tuple.row, tuple.column, tuple.row,tuple.column + 7).Merge()
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
SetCell(sheet.Row(tuple.row),tuple.column, $"Бурение в слайде : {blockDto.SlideDrillingModes}");
tuple.row+=2;
sheet.Range(tuple.row, tuple.column, tuple.row,tuple.column + 7).Merge()
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
SetCell(sheet.Row(tuple.row),tuple.column, "Бурение в роторе (за отчетный период) с использование САУБ-1");
tuple.row+=1;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, "Проходка");
tuple.column+=2;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, "Часы бурения");
tuple.column+=2;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, "Мех. скорость");
tuple.column+=2;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, "Среднее диф. Давление")
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
tuple.column=tupleStart.column;
tuple.row+=1;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.PenetrationInRotor}");
tuple.column+=2;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.NumberDrillingHours}");
tuple.column+=2;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, "");
sheet.Cell(tuple.row,tuple.column).FormulaA1 = FormulaMechanicalSpeed(tuple);
tuple.column+=2;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.AVGDiffDropRotor}")
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
tuple.column=tupleStart.column;
tuple.row+=2;
sheet.Range(tuple.row, tuple.column, tuple.row,tuple.column + 7).Merge()
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
SetCell(sheet.Row(tuple.row),tuple.column, "Бурение в слайде (за отчетный период) с использование САУБ-1");
tuple.row+=1;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, "Проходка");
tuple.column+=2;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, "Часы бурения");
tuple.column+=2;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, "Мех. скорость");
tuple.column+=2;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge()
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
SetCell(sheet.Row(tuple.row),tuple.column, "Среднее диф. Давление");
tuple.column=tupleStart.column;
tuple.row+=1;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.PenetrationInSlide}");
tuple.column+=2;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.DrillingTimeInRotor}");
tuple.column+=2;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, "");
sheet.Cell(tuple.row,tuple.column).FormulaA1 = FormulaMechanicalSpeed(tuple);
tuple.column+=2;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge()
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.AVGDiffPressureSlide}");
tuple.column=tupleStart.column;
tuple.row+=2;
sheet.Range(tuple.row, tuple.column, tuple.row,tuple.column + 5).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, "Итого за отчетный период, использование САУБ-1");
tuple.column+=6;
sheet.Range(tuple.row,tuple.column, tuple.row + 1,tuple.column + 1).Merge()
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
SetCell(sheet.Row(tuple.row),tuple.column, "Плановая мех скорость");
tuple.column = tupleStart.column;
tuple.row += 1;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, "Проходка");
tuple.column+=2;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, "Часы бурения");
tuple.column+=2;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, "Мех. скорость");
tuple.column=tupleStart.column;
tuple.row+=1;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, "");
sheet.Cell(tuple.row,tuple.column).FormulaA1 = FormulaSinking(tuple);
tuple.column+=2;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, "");
sheet.Cell(tuple.row,tuple.column).FormulaA1 = FormulaDrillingWatch(tuple);
tuple.column+=2;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, "");
tuple.column+=2;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge()
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.SectionROPPlan}");
tuple.column=tupleStart.column;
tuple.row+=2;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, "Увеличение мех скорости за секцию %");
tuple.column+=4;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge()
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
SetCell(sheet.Row(tuple.row),tuple.column, "");
tuple.column=tupleStart.column;
tuple.row+=1;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, "Увеличение мех скорости за сутки %");
tuple.column+=4;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge()
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
SetCell(sheet.Row(tuple.row),tuple.column, "");
tuple.column=tupleStart.column;
tuple.row+=1;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, "Сокращение времени бурения за секцию, ч");
tuple.column+=4;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge()
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
SetCell(sheet.Row(tuple.row),tuple.column, "");
tuple.column=tupleStart.column;
tuple.row+=1;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, "Ротор / слайд, %");
tuple.column+=4;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge()
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
SetCell(sheet.Row(tuple.row),tuple.column, "");
tuple.column=tupleStart.column;
tuple.row+=1;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, "МСП за секцию м/ч.");
tuple.column+=4;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge()
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
SetCell(sheet.Row(tuple.row),tuple.column, "");
tuple.column=tupleStart.column;
tuple.row+=1;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, "Время бурения за секцию");
tuple.column+=4;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge()
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.SectionDrillingTimeTotal}");
tuple.column=tupleStart.column;
tuple.row+=1;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, "Проходка за секцию");
tuple.column+=4;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge()
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.SectionPenetrationTotal}");
tuple.column=tupleStart.column;
tuple.row+=1;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, "Кол- во наращиваний");
tuple.column+=4;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge()
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.ExtensionsCount}");
tuple.column=tupleStart.column;
tuple.row+=1;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge();
SetCell(sheet.Row(tuple.row),tuple.column, "Отклонение от ГГД +/-, сут");
tuple.column+=4;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge()
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.DeviationFromTVD}");
tuple.column=tupleStart.column;
tuple.row+=1;
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 7).Merge()
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
SetCell(sheet.Row(tuple.row),tuple.column, $"Примечание: {blockDto.DeclinesReasonsROP}");
tuple.column += 7;
return tuple;
}
}
struct CellAddress
{
public int Col { get; set; }
public int Row { get; set; }
//public string GetExcelAddress()
//{
//}
}
}