From c4c86f00ba0c3ddab77e4b9a1a0e61adf8c17fc4 Mon Sep 17 00:00:00 2001 From: Nikita Klimenko Date: Wed, 3 Aug 2022 14:43:01 +0300 Subject: [PATCH] Consider skipRows when obtaining column indexes #132 --- .../org/jetbrains/kotlinx/dataframe/io/xlsx.kt | 2 +- .../jetbrains/kotlinx/dataframe/io/XlsxTest.kt | 6 ++++++ dataframe-excel/src/test/resources/header.xlsx | Bin 0 -> 5212 bytes 3 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 dataframe-excel/src/test/resources/header.xlsx diff --git a/dataframe-excel/src/main/kotlin/org/jetbrains/kotlinx/dataframe/io/xlsx.kt b/dataframe-excel/src/main/kotlin/org/jetbrains/kotlinx/dataframe/io/xlsx.kt index ba114a5100..58807cc785 100644 --- a/dataframe-excel/src/main/kotlin/org/jetbrains/kotlinx/dataframe/io/xlsx.kt +++ b/dataframe-excel/src/main/kotlin/org/jetbrains/kotlinx/dataframe/io/xlsx.kt @@ -158,7 +158,7 @@ public fun DataFrame.Companion.readExcel( } } } else { - sheet.getRow(0).map { it.columnIndex } + sheet.getRow(skipRows).map { it.columnIndex } } val headerRow = sheet.getRow(skipRows) diff --git a/dataframe-excel/src/test/kotlin/org/jetbrains/kotlinx/dataframe/io/XlsxTest.kt b/dataframe-excel/src/test/kotlin/org/jetbrains/kotlinx/dataframe/io/XlsxTest.kt index 02a17b56d5..f1795b2a94 100644 --- a/dataframe-excel/src/test/kotlin/org/jetbrains/kotlinx/dataframe/io/XlsxTest.kt +++ b/dataframe-excel/src/test/kotlin/org/jetbrains/kotlinx/dataframe/io/XlsxTest.kt @@ -84,4 +84,10 @@ class XlsxTest { val df = DataFrame.readExcel(testResource("custom_header_position.xlsx"), skipRows = 1) df.columnNames() shouldBe listOf("header1", "header2") } + + @Test + fun `consider skipRows when obtaining column indexes`() { + val df = DataFrame.readExcel(testResource("header.xlsx"), skipRows = 6) + df.columnNames() shouldBe listOf("Well", "Well Position", "Omit", "Sample Name", "Target Name", "Task", "Reporter", "Quencher") + } } diff --git a/dataframe-excel/src/test/resources/header.xlsx b/dataframe-excel/src/test/resources/header.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..fcb2d012ab2b18f96ee18472ff878c619e3f94fd GIT binary patch literal 5212 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 literal 0 HcmV?d00001