1
1
/*
2
2
* This file is part of the Buildings and Habitats object Model (BHoM)
3
- * Copyright (c) 2015 - 2024 , the respective contributors. All rights reserved.
3
+ * Copyright (c) 2015 - 2025 , the respective contributors. All rights reserved.
4
4
*
5
5
* Each contributor holds copyright over their respective contributions.
6
6
* The project versioning (Git) records all such contribution source information.
26
26
using BH . oM . Adapter ;
27
27
using BH . oM . Adapters . Excel ;
28
28
using BH . oM . Base ;
29
- using BH . oM . Data . Collections ;
30
29
using BH . oM . Data . Requests ;
31
30
using ClosedXML . Excel ;
32
31
using System ;
33
32
using System . Collections . Generic ;
34
- using System . Data ;
35
33
using System . IO ;
36
34
using System . Linq ;
37
35
@@ -68,6 +66,16 @@ protected override IEnumerable<IBHoMObject> Read(IRequest request, ActionConfig
68
66
return new List < IBHoMObject > ( ) ;
69
67
}
70
68
69
+ return ReadExcel ( workbook , request , actionConfig ) ;
70
+ }
71
+
72
+
73
+ /***************************************************/
74
+ /**** Private Methods ****/
75
+ /***************************************************/
76
+
77
+ private List < IBHoMObject > ReadExcel ( XLWorkbook workbook , IRequest request , ActionConfig actionConfig )
78
+ {
71
79
if ( request is ObjectRequest )
72
80
{
73
81
List < TableRow > result = ReadExcel ( workbook , ( ( ObjectRequest ) request ) . Worksheet , ( ( ObjectRequest ) request ) . Range , true ) . OfType < TableRow > ( ) . ToList ( ) ;
@@ -81,25 +89,24 @@ protected override IEnumerable<IBHoMObject> Read(IRequest request, ActionConfig
81
89
return ReadExcel ( workbook , ( ( CellContentsRequest ) request ) . Worksheet , ( ( CellContentsRequest ) request ) . Range , false ) ;
82
90
else if ( request is WorksheetsRequest )
83
91
return ReadExcel ( workbook , ( ( WorksheetsRequest ) request ) ) ;
92
+ else if ( request is BatchRequest batchRequest )
93
+ return batchRequest . Requests . Select ( x => new ResultItem { Objects = ReadExcel ( workbook , x , actionConfig ) , OriginalRequest = x } ) . ToList < IBHoMObject > ( ) ;
84
94
else
85
95
{
86
96
BH . Engine . Base . Compute . RecordError ( $ "Requests of type { request ? . GetType ( ) } are not supported by the Excel adapter.") ;
87
97
return new List < IBHoMObject > ( ) ;
88
98
}
89
99
}
90
100
91
-
92
- /***************************************************/
93
- /**** Private Methods ****/
94
101
/***************************************************/
95
102
96
103
private List < IBHoMObject > ReadExcel ( XLWorkbook workbook , WorksheetsRequest request )
97
104
{
98
- var worksheets = Worksheets ( workbook , null ) ;
105
+ IEnumerable < IXLWorksheet > worksheets = Worksheets ( workbook , null ) ;
99
106
100
107
List < BH . oM . Adapters . Excel . Worksheet > sheets = worksheets . Select ( x =>
101
108
{
102
- var sheet = new BH . oM . Adapters . Excel . Worksheet ( ) ;
109
+ Worksheet sheet = new BH . oM . Adapters . Excel . Worksheet ( ) ;
103
110
sheet . Name = x . Name ;
104
111
return sheet ;
105
112
} ) . ToList ( ) ;
@@ -120,13 +127,13 @@ private List<IBHoMObject> ReadExcel(XLWorkbook workbook, string worksheet, CellR
120
127
if ( string . IsNullOrEmpty ( range . From . Column ) )
121
128
range . From . Column = "A" ;
122
129
123
- if ( range . From . Row == - 1 )
130
+ if ( range . From . Row == - 1 )
124
131
range . From . Row = 1 ;
125
132
126
133
if ( string . IsNullOrEmpty ( range . To . Column ) )
127
134
range . To . Column = MaximumColumnName ( workbook , worksheet ) ;
128
135
129
- if ( range . To . Row == - 1 )
136
+ if ( range . To . Row == - 1 )
130
137
range . To . Row = MaximumRowNumber ( workbook , worksheet ) ;
131
138
132
139
rangeString = range . ToExcel ( ) ;
@@ -255,7 +262,7 @@ private List<IBHoMObject> CreateCustomObjects(List<TableRow> rows)
255
262
CustomObject result = new CustomObject ( ) ;
256
263
257
264
Dictionary < string , object > item = new Dictionary < string , object > ( ) ;
258
- for ( int i = 0 ; i < Math . Min ( ( int ) keys . Count ( ) , ( int ) row . Content ? . Count ( ) ) ; i ++ )
265
+ for ( int i = 0 ; i < Math . Min ( ( int ) keys . Count ( ) , ( int ) row . Content ? . Count ( ) ) ; i ++ )
259
266
{
260
267
if ( customProperties . Contains ( keys [ i ] ) )
261
268
result . SetPropertyValue ( keys [ i ] , row . Content [ i ] ) ;
@@ -273,19 +280,19 @@ private List<IBHoMObject> CreateCustomObjects(List<TableRow> rows)
273
280
274
281
private string MaximumColumnName ( IXLWorkbook workbook , string worksheet )
275
282
{
276
- var sheet = Worksheets ( workbook , worksheet ) . FirstOrDefault ( ) ;
283
+ IXLWorksheet sheet = Worksheets ( workbook , worksheet ) . FirstOrDefault ( ) ;
277
284
if ( sheet == null )
278
285
return "XFD" ; //Maximum Excel Column name
279
286
280
- var columnNumber = sheet . LastColumnUsed ( ) . ColumnNumber ( ) ;
281
- return ConvertToColumnName ( columnNumber ) ;
287
+ int columnNumber = sheet . LastColumnUsed ( ) . ColumnNumber ( ) ;
288
+ return ConvertToColumnName ( columnNumber ) ;
282
289
}
283
290
284
291
/***************************************************/
285
292
286
293
private int MaximumRowNumber ( IXLWorkbook workbook , string worksheet )
287
294
{
288
- var sheet = Worksheets ( workbook , worksheet ) . FirstOrDefault ( ) ;
295
+ IXLWorksheet sheet = Worksheets ( workbook , worksheet ) . FirstOrDefault ( ) ;
289
296
if ( sheet == null )
290
297
return 1048576 ; //Maximum Excel Row number
291
298
@@ -315,3 +322,4 @@ private string ConvertToColumnName(int number)
315
322
316
323
317
324
325
+
0 commit comments