diff --git a/AsbCloudInfrastructure/Services/DailyReport/XLExtentions.cs b/AsbCloudInfrastructure/Services/DailyReport/XLExtentions.cs
deleted file mode 100644
index 30eee683..00000000
--- a/AsbCloudInfrastructure/Services/DailyReport/XLExtentions.cs
+++ /dev/null
@@ -1,161 +0,0 @@
-using ClosedXML.Excel;
-using System;
-
-namespace AsbCloudInfrastructure.Services.DailyReport
-{
-
- internal static class XLExtentions
- {
- public static IXLRange _SetValue(this IXLRange range, object value)
- {
- var mergedRange = range.Merge();
- mergedRange.FirstCell()._SetValue(value);
- var colWidth = mergedRange.FirstCell().WorksheetColumn().Width;
- var maxCharsToWrap = colWidth / (0.1d * mergedRange.FirstCell().Style.Font.FontSize);
- if (value is string valueString && valueString.Length > maxCharsToWrap)
- {
- var row = mergedRange.FirstCell().WorksheetRow();
- var baseHeight = row.Height;
- row.Height = 0.5d * baseHeight * Math.Ceiling(1d + valueString.Length / maxCharsToWrap);
- }
- mergedRange.Style.SetAllBorders()
- .Alignment.SetWrapText(true);
- return mergedRange;
- }
-
- public static IXLCell _SetValue(this IXLCell cell, object value)
- {
- switch (value)
- {
- case DateTime dateTime:
- cell._SetValue(dateTime);
- break;
- case IFormattable formattable:
- cell._SetValue(formattable);
- break;
- case string valueString:
- cell._SetValue(valueString);
- break;
- default:
- cell.Value = value;
- break;
- }
-
- return cell;
- }
-
- public static IXLCell _SetValue(this IXLCell cell, string value, bool adaptRowHeight = false)
- {
- cell.Value = value;
- cell.Style
- .SetAllBorders()
- .Alignment.WrapText = true;
-
- cell.Value = value;
- if (adaptRowHeight)
- {
- var colWidth = cell.WorksheetColumn().Width;
- var maxCharsToWrap = colWidth / (0.1d * cell.Style.Font.FontSize);
- if (value.Length > maxCharsToWrap)
- {
- var row = cell.WorksheetRow();
- var baseHeight = row.Height;
- row.Height = 0.5d * baseHeight * Math.Ceiling(1d + value.Length / maxCharsToWrap);
- }
- }
-
- return cell;
- }
-
- public static IXLCell _ValueNoBorder(this IXLCell cell, string value, bool adaptRowHeight = false)
- {
- cell.Value = value;
- cell.Style.Alignment.WrapText = true;
-
- cell.Value = value;
- if (adaptRowHeight)
- {
- var colWidth = cell.WorksheetColumn().Width;
- var maxCharsToWrap = colWidth / (0.1d * cell.Style.Font.FontSize);
- if (value.Length > maxCharsToWrap)
- {
- var row = cell.WorksheetRow();
- var baseHeight = row.Height;
- row.Height = 0.5d * baseHeight * Math.Ceiling(1d + value.Length / maxCharsToWrap);
- }
- }
-
- return cell;
- }
-
-
-
-
- public static IXLCell _SetValue(this IXLCell cell, DateTime value, string dateFormat = "DD.MM.YYYY HH:MM:SS")
- {
- cell.Value = value;
- cell.Style
- .SetAllBorders()
- .Alignment.WrapText = true;
-
- cell.Value = value;
-
- cell.DataType = XLDataType.DateTime;
- cell.Style.DateFormat.Format = "DD.MM.YYYY HH:MM:SS";
-
- return cell;
- }
-
- public static IXLCell _SetValue(this IXLCell cell, IFormattable value, string format = "0.00")
- {
- cell.Value = value;
- cell.Style
- .SetAllBorders()
- .Alignment.WrapText = true;
-
- cell.Value = value;
-
- cell.DataType = XLDataType.Number;
- cell.Style.NumberFormat.Format = "0.00";
-
- return cell;
- }
-
- public static IXLStyle SetAllBorders(this IXLStyle style, XLBorderStyleValues borderStyle = XLBorderStyleValues.Thin)
- {
- style.Border.RightBorder = borderStyle;
- style.Border.LeftBorder = borderStyle;
- style.Border.TopBorder = borderStyle;
- style.Border.BottomBorder = borderStyle;
- style.Border.InsideBorder = borderStyle;
- style.Border.OutsideBorder = borderStyle;
- return style;
- }
-
- public static IXLStyle SetBaseFont(this IXLStyle style)
- {
- style.Font.FontName = "Calibri";
- style.Font.FontSize = 10;
- return style;
- }
-
- public static IXLStyle SetH1(this IXLStyle style)
- {
- style.Font.FontName = "Calibri";
- style.Font.FontSize = 14;
- return style;
- }
-
- ///
- /// Костыль исправляющий проблему в библиотеке IXLRange Range(this IXLWorksheet, IXLAddress, IXLAddress) с кастингом IXLAddress к XLAddress.
- ///
- ///
- ///
- ///
- ///
- public static IXLRange _Range(this IXLWorksheet sheet, CellAddress begin, CellAddress end)
- => sheet.Range(begin.RowNumber, begin.ColumnNumber, end.RowNumber, end.ColumnNumber);
-
- }
-
-}
diff --git a/AsbCloudInfrastructure/Services/ProcessMap/ProcessMapPlanImportService.cs b/AsbCloudInfrastructure/Services/ProcessMap/ProcessMapPlanImportService.cs
index e8185a34..7ff6ecf2 100644
--- a/AsbCloudInfrastructure/Services/ProcessMap/ProcessMapPlanImportService.cs
+++ b/AsbCloudInfrastructure/Services/ProcessMap/ProcessMapPlanImportService.cs
@@ -187,23 +187,23 @@ public class ProcessMapPlanImportService : IProcessMapPlanImportService
private ProcessMapPlanDto ParseRow(IXLRow row)
{
- var wellSectionTypeCaption = GetCellValue(row, columnWellSectionType).Trim().ToLower();
- var modeName = GetCellValue(row, columnMode).Trim().ToLower();
- var depthStart = GetCellValue(row, columnDepthStart);
- var depthEnd = GetCellValue(row, columnDepthEnd);
- var pressurePlan = GetCellValue(row, columnPressurePlan);
- var pressureLimitMax = GetCellValue(row, columnPressureLimitMax);
- var axialLoadPlan = GetCellValue(row, columnAxialLoadPlan);
- var axialLoadLimitMax = GetCellValue(row, columnAxialLoadLimitMax);
- var topDriveTorquePlan = GetCellValue(row, columnTopDriveTorquePlan);
- var topDriveTorqueLimitMax = GetCellValue(row, columnTopDriveTorqueLimitMax);
- var topDriveSpeedPlan = GetCellValue(row, columnTopDriveSpeedPlan);
- var topDriveSpeedLimitMax = GetCellValue(row, columnTopDriveSpeedLimitMax);
- var flowPlan = GetCellValue(row, columnFlowPlan);
- var flowLimitMax = GetCellValue(row, columnFlowLimitMax);
- var ropPlan = GetCellValue(row, columnRopPlan);
- var usageSaub = GetCellValue(row, columnUsageSaub);
- var usageSpin = GetCellValue(row, columnUsageSpin);
+ var wellSectionTypeCaption = row.Cell(columnWellSectionType).GetCellValue().Trim().ToLower();
+ var modeName = row.Cell(columnMode).GetCellValue().Trim().ToLower();
+ var depthStart = row.Cell(columnDepthStart).GetCellValue();
+ var depthEnd = row.Cell(columnDepthEnd).GetCellValue();
+ var pressurePlan = row.Cell(columnPressurePlan).GetCellValue();
+ var pressureLimitMax = row.Cell(columnPressureLimitMax).GetCellValue();
+ var axialLoadPlan = row.Cell(columnAxialLoadPlan).GetCellValue();
+ var axialLoadLimitMax = row.Cell(columnAxialLoadLimitMax).GetCellValue();
+ var topDriveTorquePlan = row.Cell(columnTopDriveTorquePlan).GetCellValue();
+ var topDriveTorqueLimitMax = row.Cell(columnTopDriveTorqueLimitMax).GetCellValue();
+ var topDriveSpeedPlan = row.Cell(columnTopDriveSpeedPlan).GetCellValue();
+ var topDriveSpeedLimitMax = row.Cell(columnTopDriveSpeedLimitMax).GetCellValue();
+ var flowPlan = row.Cell(columnFlowPlan).GetCellValue();
+ var flowLimitMax = row.Cell(columnFlowLimitMax).GetCellValue();
+ var ropPlan = row.Cell(columnRopPlan).GetCellValue();
+ var usageSaub = row.Cell(columnUsageSaub).GetCellValue();
+ var usageSpin = row.Cell(columnUsageSpin).GetCellValue();
var wellSection = sections.FirstOrDefault(s => s.Caption.Trim().ToLower() == wellSectionTypeCaption)
?? throw new FileFormatException(
@@ -342,19 +342,4 @@ public class ProcessMapPlanImportService : IProcessMapPlanImportService
2 => "Слайд",
_ => "Ручной",
};
-
- //TODO: вынести в метод расширения
- private static T GetCellValue(IXLRow row, int columnNumber)
- {
- try
- {
- var cell = row.Cell(columnNumber);
- return (T)Convert.ChangeType(cell.Value, typeof(T));
- }
- catch
- {
- throw new FileFormatException(
- $"Лист {row.Worksheet.Name}. Ячейка: ({row.RowNumber()},{columnNumber}) содержит некорректное значение");
- }
- }
}
\ No newline at end of file
diff --git a/AsbCloudInfrastructure/Services/Trajectory/PlannedTrajectoryImportService.cs b/AsbCloudInfrastructure/Services/Trajectory/PlannedTrajectoryImportService.cs
index 6ea64efb..ff1c59b6 100644
--- a/AsbCloudInfrastructure/Services/Trajectory/PlannedTrajectoryImportService.cs
+++ b/AsbCloudInfrastructure/Services/Trajectory/PlannedTrajectoryImportService.cs
@@ -177,32 +177,18 @@ namespace AsbCloudInfrastructure.Services.Trajectory
private TrajectoryGeoPlanDto ParseRow(IXLRow row)
{
- var _wellboreDepth = row.Cell(ColumnWellboreDepth).Value;
- var _zenithAngle = row.Cell(ColumnZenithAngle).Value;
- var _azimuthGeo = row.Cell(ColumnAzimuthGeo).Value;
- var _azimuthMagnetic = row.Cell(ColumnAzimuthMagnetic).Value;
- var _verticalDepth = row.Cell(ColumnVerticalDepth).Value;
- var _radius = row.Cell(ColumnRadius).Value;
- var _comment = row.Cell(ColumnComment).Value;
-
- var trajectoryRow = new TrajectoryGeoPlanDto();
-
- static double getDoubleValue(object value, string nameParam, IXLRow row)
+ var trajectoryRow = new TrajectoryGeoPlanDto
{
- if (value is double _value)
- return _value;
- throw new FileFormatException($"Лист {row.Worksheet.Name}. Строка {row.RowNumber()} - некорректные данные - {nameParam}");
- }
-
- trajectoryRow.WellboreDepth = getDoubleValue(_wellboreDepth, "Глубина по стволу", row);
- trajectoryRow.ZenithAngle = getDoubleValue(_zenithAngle, "Зенитный угол", row);
- trajectoryRow.AzimuthGeo = getDoubleValue(_azimuthGeo, "Азимут географический", row);
- trajectoryRow.AzimuthMagnetic = getDoubleValue(_azimuthMagnetic, "Азимут магнитный", row);
- trajectoryRow.VerticalDepth = getDoubleValue(_verticalDepth, "Глубина вертикальная", row);
- trajectoryRow.Radius = getDoubleValue(_radius, "Радиус цели", row);
-
- if (_comment is not null)
- trajectoryRow.Comment = _comment.ToString();
+ WellboreDepth = row.Cell(ColumnWellboreDepth).GetCellValue(),
+ ZenithAngle = row.Cell(ColumnZenithAngle).GetCellValue(),
+ AzimuthGeo = row.Cell(ColumnAzimuthGeo).GetCellValue(),
+ AzimuthMagnetic = row.Cell(ColumnAzimuthMagnetic).GetCellValue(),
+ VerticalDepth = row.Cell(ColumnVerticalDepth).GetCellValue(),
+ Radius = row.Cell(ColumnRadius).GetCellValue(),
+ Comment = row.Cell(ColumnComment).IsEmpty() ? null :
+ row.Cell(ColumnComment).GetCellValue()
+ };
+
return trajectoryRow;
}
}
diff --git a/AsbCloudInfrastructure/Services/WellOperationImport/FileParser/WellOperationDefaultExcelParser.cs b/AsbCloudInfrastructure/Services/WellOperationImport/FileParser/WellOperationDefaultExcelParser.cs
index f5f56612..ef9ed499 100644
--- a/AsbCloudInfrastructure/Services/WellOperationImport/FileParser/WellOperationDefaultExcelParser.cs
+++ b/AsbCloudInfrastructure/Services/WellOperationImport/FileParser/WellOperationDefaultExcelParser.cs
@@ -79,28 +79,14 @@ public class WellOperationDefaultExcelParser : IWellOperationExcelParser
return new RowDto
{
Number = xlRow.RowNumber(),
- Section = GetCellValue(xlRow.Cell(DefaultTemplateInfo.ColumnSection)),
- Category = GetCellValue(xlRow.Cell(DefaultTemplateInfo.ColumnCategory)),
- CategoryInfo = GetCellValue(xlRow.Cell(DefaultTemplateInfo.ColumnCategoryInfo)),
- DepthStart = GetCellValue(xlRow.Cell(DefaultTemplateInfo.ColumnDepthStart)),
- DepthEnd = GetCellValue(xlRow.Cell(DefaultTemplateInfo.ColumnDepthEnd)),
- Date = GetCellValue(xlRow.Cell(DefaultTemplateInfo.ColumnDate)),
- Duration = GetCellValue(xlRow.Cell(DefaultTemplateInfo.ColumnDuration)),
- Comment = GetCellValue(xlRow.Cell(DefaultTemplateInfo.ColumnComment))
+ Section = xlRow.Cell(DefaultTemplateInfo.ColumnSection).GetCellValue(),
+ Category = xlRow.Cell(DefaultTemplateInfo.ColumnCategory).GetCellValue(),
+ CategoryInfo = xlRow.Cell(DefaultTemplateInfo.ColumnCategoryInfo).GetCellValue(),
+ DepthStart = xlRow.Cell(DefaultTemplateInfo.ColumnDepthStart).GetCellValue(),
+ DepthEnd = xlRow.Cell(DefaultTemplateInfo.ColumnDepthEnd).GetCellValue(),
+ Date = xlRow.Cell(DefaultTemplateInfo.ColumnDate).GetCellValue(),
+ Duration = xlRow.Cell(DefaultTemplateInfo.ColumnDuration).GetCellValue(),
+ Comment = xlRow.Cell(DefaultTemplateInfo.ColumnComment).GetCellValue()
};
}
-
- //TODO: вынести в метод расширения
- private static T GetCellValue(IXLCell cell)
- {
- try
- {
- return (T)Convert.ChangeType(cell.Value, typeof(T));
- }
- catch
- {
- throw new FileFormatException(
- $"Лист '{cell.Worksheet.Name}'. Ячейка: ({cell.Address.RowNumber},{cell.Address.ColumnNumber}) содержит некорректное значение");
- }
- }
}
\ No newline at end of file
diff --git a/AsbCloudInfrastructure/Services/WellOperationImport/FileParser/WellOperationGazpromKhantosExcelParser.cs b/AsbCloudInfrastructure/Services/WellOperationImport/FileParser/WellOperationGazpromKhantosExcelParser.cs
index 6f0b412d..d1ce47cd 100644
--- a/AsbCloudInfrastructure/Services/WellOperationImport/FileParser/WellOperationGazpromKhantosExcelParser.cs
+++ b/AsbCloudInfrastructure/Services/WellOperationImport/FileParser/WellOperationGazpromKhantosExcelParser.cs
@@ -97,11 +97,11 @@ public class WellOperationGazpromKhantosExcelParser : IWellOperationExcelParser
operations.Add(new Operation
{
RowNumber = xlRow.RowNumber(),
- CategoryInfo = GetCellValue(xlRow.Cell(operationAttributes[OperationAttributes.CategoryInfo])),
- SectionDiameter = GetCellValue(xlRow.Cell(operationAttributes[OperationAttributes.SectionDiameter])),
- Depth = GetCellValue(xlRow.Cell(operationAttributes[OperationAttributes.Depth])),
- Duration = GetCellValue(xlRow.Cell(operationAttributes[OperationAttributes.Duration])),
- Date = GetCellValue(xlRow.Cell(operationAttributes[OperationAttributes.Date]))
+ CategoryInfo = xlRow.Cell(operationAttributes[OperationAttributes.CategoryInfo]).GetCellValue(),
+ SectionDiameter =xlRow.Cell(operationAttributes[OperationAttributes.SectionDiameter]).GetCellValue(),
+ Depth = xlRow.Cell(operationAttributes[OperationAttributes.Depth]).GetCellValue(),
+ Duration = xlRow.Cell(operationAttributes[OperationAttributes.Duration]).GetCellValue(),
+ Date = xlRow.Cell(operationAttributes[OperationAttributes.Date]).GetCellValue()
});
}
catch (FileFormatException ex)
@@ -183,7 +183,7 @@ public class WellOperationGazpromKhantosExcelParser : IWellOperationExcelParser
foreach (var cell in cells)
{
- var operationAttribute = GetValueDictionary(operationAttributesDict, GetCellValue(cell), 0.7);
+ var operationAttribute = GetValueDictionary(operationAttributesDict, cell.GetCellValue(), 0.7);
if (operationAttribute is null || operationAttributes.Any(a => a.Key == operationAttribute))
continue;
@@ -234,21 +234,4 @@ public class WellOperationGazpromKhantosExcelParser : IWellOperationExcelParser
.Select(line => line.Split(separator))
.ToDictionary(parts => parts[0].Trim(), parts => parts[1].Trim());
}
-
- //TODO: вынести в метод расширения
- private static T GetCellValue(IXLCell cell)
- {
- try
- {
- if (typeof(T) != typeof(DateTime))
- return (T)Convert.ChangeType(cell.GetFormattedString(), typeof(T), CultureInfo.InvariantCulture);
-
- return (T)(object)DateTime.FromOADate((double)cell.Value);
- }
- catch
- {
- throw new FileFormatException(
- $"Лист '{cell.Worksheet.Name}'. Ячейка: ({cell.Address.RowNumber},{cell.Address.ColumnNumber}) содержит некорректное значение");
- }
- }
}
\ No newline at end of file
diff --git a/AsbCloudInfrastructure/XLExtentions.cs b/AsbCloudInfrastructure/XLExtentions.cs
new file mode 100644
index 00000000..ac2a40a1
--- /dev/null
+++ b/AsbCloudInfrastructure/XLExtentions.cs
@@ -0,0 +1,176 @@
+using ClosedXML.Excel;
+using System;
+using System.Globalization;
+using System.IO;
+using AsbCloudInfrastructure.Services.DailyReport;
+
+namespace AsbCloudInfrastructure;
+
+internal static class XLExtentions
+{
+ internal static IXLRange _SetValue(this IXLRange range, object value)
+ {
+ var mergedRange = range.Merge();
+ mergedRange.FirstCell()._SetValue(value);
+ var colWidth = mergedRange.FirstCell().WorksheetColumn().Width;
+ var maxCharsToWrap = colWidth / (0.1d * mergedRange.FirstCell().Style.Font.FontSize);
+ if (value is string valueString && valueString.Length > maxCharsToWrap)
+ {
+ var row = mergedRange.FirstCell().WorksheetRow();
+ var baseHeight = row.Height;
+ row.Height = 0.5d * baseHeight * Math.Ceiling(1d + valueString.Length / maxCharsToWrap);
+ }
+
+ mergedRange.Style.SetAllBorders()
+ .Alignment.SetWrapText(true);
+ return mergedRange;
+ }
+
+ internal static IXLCell _SetValue(this IXLCell cell, object value)
+ {
+ switch (value)
+ {
+ case DateTime dateTime:
+ cell._SetValue(dateTime);
+ break;
+ case IFormattable formattable:
+ cell._SetValue(formattable);
+ break;
+ case string valueString:
+ cell._SetValue(valueString);
+ break;
+ default:
+ cell.Value = value;
+ break;
+ }
+
+ return cell;
+ }
+
+ internal static IXLCell _SetValue(this IXLCell cell, string value, bool adaptRowHeight = false)
+ {
+ cell.Value = value;
+ cell.Style
+ .SetAllBorders()
+ .Alignment.WrapText = true;
+
+ cell.Value = value;
+ if (adaptRowHeight)
+ {
+ var colWidth = cell.WorksheetColumn().Width;
+ var maxCharsToWrap = colWidth / (0.1d * cell.Style.Font.FontSize);
+ if (value.Length > maxCharsToWrap)
+ {
+ var row = cell.WorksheetRow();
+ var baseHeight = row.Height;
+ row.Height = 0.5d * baseHeight * Math.Ceiling(1d + value.Length / maxCharsToWrap);
+ }
+ }
+
+ return cell;
+ }
+
+ internal static IXLCell _ValueNoBorder(this IXLCell cell, string value, bool adaptRowHeight = false)
+ {
+ cell.Value = value;
+ cell.Style.Alignment.WrapText = true;
+
+ cell.Value = value;
+ if (adaptRowHeight)
+ {
+ var colWidth = cell.WorksheetColumn().Width;
+ var maxCharsToWrap = colWidth / (0.1d * cell.Style.Font.FontSize);
+ if (value.Length > maxCharsToWrap)
+ {
+ var row = cell.WorksheetRow();
+ var baseHeight = row.Height;
+ row.Height = 0.5d * baseHeight * Math.Ceiling(1d + value.Length / maxCharsToWrap);
+ }
+ }
+
+ return cell;
+ }
+
+
+ internal static IXLCell _SetValue(this IXLCell cell, DateTime value, string dateFormat = "DD.MM.YYYY HH:MM:SS")
+ {
+ cell.Value = value;
+ cell.Style
+ .SetAllBorders()
+ .Alignment.WrapText = true;
+
+ cell.Value = value;
+
+ cell.DataType = XLDataType.DateTime;
+ cell.Style.DateFormat.Format = "DD.MM.YYYY HH:MM:SS";
+
+ return cell;
+ }
+
+ internal static IXLCell _SetValue(this IXLCell cell, IFormattable value, string format = "0.00")
+ {
+ cell.Value = value;
+ cell.Style
+ .SetAllBorders()
+ .Alignment.WrapText = true;
+
+ cell.Value = value;
+
+ cell.DataType = XLDataType.Number;
+ cell.Style.NumberFormat.Format = "0.00";
+
+ return cell;
+ }
+
+ internal static IXLStyle SetAllBorders(this IXLStyle style, XLBorderStyleValues borderStyle = XLBorderStyleValues.Thin)
+ {
+ style.Border.RightBorder = borderStyle;
+ style.Border.LeftBorder = borderStyle;
+ style.Border.TopBorder = borderStyle;
+ style.Border.BottomBorder = borderStyle;
+ style.Border.InsideBorder = borderStyle;
+ style.Border.OutsideBorder = borderStyle;
+ return style;
+ }
+
+ internal static IXLStyle SetBaseFont(this IXLStyle style)
+ {
+ style.Font.FontName = "Calibri";
+ style.Font.FontSize = 10;
+ return style;
+ }
+
+ internal static IXLStyle SetH1(this IXLStyle style)
+ {
+ style.Font.FontName = "Calibri";
+ style.Font.FontSize = 14;
+ return style;
+ }
+
+ ///
+ /// Костыль исправляющий проблему в библиотеке IXLRange Range(this IXLWorksheet, IXLAddress, IXLAddress) с кастингом IXLAddress к XLAddress.
+ ///
+ ///
+ ///
+ ///
+ ///
+ internal static IXLRange _Range(this IXLWorksheet sheet, CellAddress begin, CellAddress end)
+ => sheet.Range(begin.RowNumber, begin.ColumnNumber, end.RowNumber, end.ColumnNumber);
+
+
+ internal static T GetCellValue(this IXLCell cell)
+ {
+ try
+ {
+ if (typeof(T) != typeof(DateTime))
+ return (T)Convert.ChangeType(cell.GetFormattedString(), typeof(T), CultureInfo.InvariantCulture);
+
+ return (T)(object)DateTime.FromOADate((double)cell.Value);
+ }
+ catch
+ {
+ throw new FileFormatException(
+ $"Лист '{cell.Worksheet.Name}'. Ячейка: ({cell.Address.RowNumber},{cell.Address.ColumnNumber}) содержит некорректное значение");
+ }
+ }
+}
\ No newline at end of file