diff --git a/src/ExcelProvider/ExcelAddressing.fs b/src/ExcelProvider/ExcelAddressing.fs index 539a23b..d005a76 100644 --- a/src/ExcelProvider/ExcelAddressing.fs +++ b/src/ExcelProvider/ExcelAddressing.fs @@ -110,10 +110,14 @@ let getRangeView (workbook : DataSet) range = ///Gets a View object which can be used to read data from the given range in the DataSet let public getView (workbook : DataSet) range = let worksheets = workbook.Tables - let firstWorkSheetName = worksheets.[0].TableName + + let workSheetName = + if worksheets.Contains range + then range + else worksheets.[0].TableName - let ranges = - parseExcelRanges firstWorkSheetName range + let ranges = + parseExcelRanges workSheetName range |> List.map (getRangeView workbook) let minRow = ranges |> Seq.map (fun range -> range.StartRow) |> Seq.min diff --git a/tests/ExcelProvider.Tests/ExcelProvider.Tests.fs b/tests/ExcelProvider.Tests/ExcelProvider.Tests.fs index c5ff0a4..8585bf2 100644 --- a/tests/ExcelProvider.Tests/ExcelProvider.Tests.fs +++ b/tests/ExcelProvider.Tests/ExcelProvider.Tests.fs @@ -13,6 +13,9 @@ type MultipleRegions = ExcelFile<"MultipleRegions.xlsx", "A1:C5,E3:G5", true> type DifferentMainSheet = ExcelFile<"DifferentMainSheet.xlsx"> type DataTypes = ExcelFile<"DataTypes.xlsx"> +type MultipleSheetsFirst = ExcelFile<"MultipleSheets.xlsx", "A"> +type MultipleSheetsSecond = ExcelFile<"MultipleSheets.xlsx", "B"> + [] let ``Read Text as String``() = let file = DataTypes() @@ -173,4 +176,28 @@ let ``Can load from multiple ranges``() = rows.[3].Third |> should equal "A12" rows.[3].Fourth |> should equal null rows.[3].Fifth |> should equal null - rows.[3].Sixth |> should equal null \ No newline at end of file + rows.[3].Sixth |> should equal null + +[] +let ``Can load from first multiple sheets - first``() = + let file = MultipleSheetsFirst() + let rows = file.Data |> Seq.toArray + + rows.[0].First |> should equal 1.0 + rows.[0].Second |> should equal false + rows.[0].Third |> should equal "a" + + rows.[1].First |> should equal 2.0 + rows.[1].Second |> should equal true + rows.[1].Third |> should equal "b" + +[] +let ``Can load from first multiple sheets - second``() = + let file = MultipleSheetsSecond() + let rows = file.Data |> Seq.toArray + + rows.[0].Fourth |> should equal 2.2 + rows.[0].Fifth |> should equal (new DateTime(2013,1,1)) + + rows.[1].Fourth |> should equal 3.2 + rows.[1].Fifth |> should equal (new DateTime(2013,2,1)) diff --git a/tests/ExcelProvider.Tests/MultipleSheets.xlsx b/tests/ExcelProvider.Tests/MultipleSheets.xlsx new file mode 100644 index 0000000..ed8aee7 Binary files /dev/null and b/tests/ExcelProvider.Tests/MultipleSheets.xlsx differ