init research
This commit is contained in:
Vendored
+8
@@ -0,0 +1,8 @@
|
||||
## :dataframe-excel
|
||||
|
||||
This module, published as `dataframe-excel`, contains all logic and tests for DataFrame to be able to work with
|
||||
`xls` and `xlsx` files.
|
||||
|
||||
See [Read from Excel](https://kotlin.github.io/dataframe/read.html#read-from-excel) and
|
||||
[Write to Excel spreadsheet](https://kotlin.github.io/dataframe/write.html#write-to-excel-spreadsheet)
|
||||
for more information about how to use it.
|
||||
@@ -0,0 +1,91 @@
|
||||
public final class org/jetbrains/kotlinx/dataframe/io/Excel : org/jetbrains/kotlinx/dataframe/io/SupportedDataFrameFormat {
|
||||
public fun <init> ()V
|
||||
public fun acceptsExtension (Ljava/lang/String;)Z
|
||||
public fun acceptsSample (Lorg/jetbrains/kotlinx/dataframe/io/SupportedFormatSample;)Z
|
||||
public fun createDefaultReadMethod (Ljava/lang/String;)Lorg/jetbrains/kotlinx/dataframe/codeGen/DefaultReadDfMethod;
|
||||
public fun getTestOrder ()I
|
||||
public fun readDataFrame (Ljava/io/File;Ljava/util/List;)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public fun readDataFrame (Ljava/io/InputStream;Ljava/util/List;)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public fun readDataFrame (Ljava/nio/file/Path;Ljava/util/List;)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
}
|
||||
|
||||
public final class org/jetbrains/kotlinx/dataframe/io/FormattingOptions {
|
||||
public fun <init> (Ljava/lang/String;Lorg/apache/poi/ss/usermodel/DataFormatter;)V
|
||||
public synthetic fun <init> (Ljava/lang/String;Lorg/apache/poi/ss/usermodel/DataFormatter;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||
public final fun getColumnIndices ()Ljava/util/Set;
|
||||
public final fun getFormatter ()Lorg/apache/poi/ss/usermodel/DataFormatter;
|
||||
}
|
||||
|
||||
public final class org/jetbrains/kotlinx/dataframe/io/StringColumns {
|
||||
public static final synthetic fun box-impl (Ljava/lang/String;)Lorg/jetbrains/kotlinx/dataframe/io/StringColumns;
|
||||
public static fun constructor-impl (Ljava/lang/String;)Ljava/lang/String;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public static fun equals-impl (Ljava/lang/String;Ljava/lang/Object;)Z
|
||||
public static final fun equals-impl0 (Ljava/lang/String;Ljava/lang/String;)Z
|
||||
public final fun getRange ()Ljava/lang/String;
|
||||
public fun hashCode ()I
|
||||
public static fun hashCode-impl (Ljava/lang/String;)I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
public static fun toString-impl (Ljava/lang/String;)Ljava/lang/String;
|
||||
public final synthetic fun unbox-impl ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public final class org/jetbrains/kotlinx/dataframe/io/WorkBookType : java/lang/Enum {
|
||||
public static final field XLS Lorg/jetbrains/kotlinx/dataframe/io/WorkBookType;
|
||||
public static final field XLSX Lorg/jetbrains/kotlinx/dataframe/io/WorkBookType;
|
||||
public static fun getEntries ()Lkotlin/enums/EnumEntries;
|
||||
public static fun valueOf (Ljava/lang/String;)Lorg/jetbrains/kotlinx/dataframe/io/WorkBookType;
|
||||
public static fun values ()[Lorg/jetbrains/kotlinx/dataframe/io/WorkBookType;
|
||||
}
|
||||
|
||||
public final class org/jetbrains/kotlinx/dataframe/io/XlsxKt {
|
||||
public static final synthetic fun readExcel (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Lorg/apache/poi/ss/usermodel/Sheet;Ljava/lang/String;Lorg/jetbrains/kotlinx/dataframe/io/FormattingOptions;ILjava/lang/Integer;Lorg/jetbrains/kotlinx/dataframe/io/NameRepairStrategy;)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public static final fun readExcel (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Lorg/apache/poi/ss/usermodel/Sheet;Ljava/lang/String;Lorg/jetbrains/kotlinx/dataframe/io/FormattingOptions;ILjava/lang/Integer;Lorg/jetbrains/kotlinx/dataframe/io/NameRepairStrategy;ZZ)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public static final synthetic fun readExcel (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Lorg/apache/poi/ss/usermodel/Workbook;Ljava/lang/String;ILjava/lang/String;Lorg/jetbrains/kotlinx/dataframe/io/FormattingOptions;Ljava/lang/Integer;Lorg/jetbrains/kotlinx/dataframe/io/NameRepairStrategy;)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public static final synthetic fun readExcel (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Lorg/apache/poi/ss/usermodel/Workbook;Ljava/lang/String;ILjava/lang/String;Lorg/jetbrains/kotlinx/dataframe/io/FormattingOptions;Ljava/lang/Integer;Lorg/jetbrains/kotlinx/dataframe/io/NameRepairStrategy;Z)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public static final fun readExcel (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Lorg/apache/poi/ss/usermodel/Workbook;Ljava/lang/String;ILjava/lang/String;Lorg/jetbrains/kotlinx/dataframe/io/FormattingOptions;Ljava/lang/Integer;Lorg/jetbrains/kotlinx/dataframe/io/NameRepairStrategy;ZZ)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public static synthetic fun readExcel$default (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Lorg/apache/poi/ss/usermodel/Sheet;Ljava/lang/String;Lorg/jetbrains/kotlinx/dataframe/io/FormattingOptions;ILjava/lang/Integer;Lorg/jetbrains/kotlinx/dataframe/io/NameRepairStrategy;ILjava/lang/Object;)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public static synthetic fun readExcel$default (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Lorg/apache/poi/ss/usermodel/Sheet;Ljava/lang/String;Lorg/jetbrains/kotlinx/dataframe/io/FormattingOptions;ILjava/lang/Integer;Lorg/jetbrains/kotlinx/dataframe/io/NameRepairStrategy;ZZILjava/lang/Object;)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public static synthetic fun readExcel$default (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Lorg/apache/poi/ss/usermodel/Workbook;Ljava/lang/String;ILjava/lang/String;Lorg/jetbrains/kotlinx/dataframe/io/FormattingOptions;Ljava/lang/Integer;Lorg/jetbrains/kotlinx/dataframe/io/NameRepairStrategy;ILjava/lang/Object;)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public static synthetic fun readExcel$default (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Lorg/apache/poi/ss/usermodel/Workbook;Ljava/lang/String;ILjava/lang/String;Lorg/jetbrains/kotlinx/dataframe/io/FormattingOptions;Ljava/lang/Integer;Lorg/jetbrains/kotlinx/dataframe/io/NameRepairStrategy;ZILjava/lang/Object;)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public static synthetic fun readExcel$default (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Lorg/apache/poi/ss/usermodel/Workbook;Ljava/lang/String;ILjava/lang/String;Lorg/jetbrains/kotlinx/dataframe/io/FormattingOptions;Ljava/lang/Integer;Lorg/jetbrains/kotlinx/dataframe/io/NameRepairStrategy;ZZILjava/lang/Object;)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public static final synthetic fun readExcel-CWg63oo (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Ljava/io/File;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Lorg/jetbrains/kotlinx/dataframe/io/NameRepairStrategy;)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public static final synthetic fun readExcel-CWg63oo (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Ljava/io/InputStream;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Lorg/jetbrains/kotlinx/dataframe/io/NameRepairStrategy;)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public static final synthetic fun readExcel-CWg63oo (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Lorg/jetbrains/kotlinx/dataframe/io/NameRepairStrategy;)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public static final synthetic fun readExcel-CWg63oo (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Ljava/net/URL;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Lorg/jetbrains/kotlinx/dataframe/io/NameRepairStrategy;)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public static synthetic fun readExcel-CWg63oo$default (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Ljava/io/File;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Lorg/jetbrains/kotlinx/dataframe/io/NameRepairStrategy;ILjava/lang/Object;)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public static synthetic fun readExcel-CWg63oo$default (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Ljava/io/InputStream;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Lorg/jetbrains/kotlinx/dataframe/io/NameRepairStrategy;ILjava/lang/Object;)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public static synthetic fun readExcel-CWg63oo$default (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Lorg/jetbrains/kotlinx/dataframe/io/NameRepairStrategy;ILjava/lang/Object;)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public static synthetic fun readExcel-CWg63oo$default (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Ljava/net/URL;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Lorg/jetbrains/kotlinx/dataframe/io/NameRepairStrategy;ILjava/lang/Object;)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public static final fun readExcel-Q2e6U8A (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Ljava/io/File;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Lorg/jetbrains/kotlinx/dataframe/io/NameRepairStrategy;ZZ)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public static final fun readExcel-Q2e6U8A (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Ljava/io/InputStream;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Lorg/jetbrains/kotlinx/dataframe/io/NameRepairStrategy;ZZ)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public static final fun readExcel-Q2e6U8A (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Lorg/jetbrains/kotlinx/dataframe/io/NameRepairStrategy;ZZ)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public static final fun readExcel-Q2e6U8A (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Ljava/net/URL;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Lorg/jetbrains/kotlinx/dataframe/io/NameRepairStrategy;ZZ)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public static final fun readExcel-Q2e6U8A (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Ljava/nio/file/Path;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Lorg/jetbrains/kotlinx/dataframe/io/NameRepairStrategy;ZZ)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public static synthetic fun readExcel-Q2e6U8A$default (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Ljava/io/File;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Lorg/jetbrains/kotlinx/dataframe/io/NameRepairStrategy;ZZILjava/lang/Object;)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public static synthetic fun readExcel-Q2e6U8A$default (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Ljava/io/InputStream;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Lorg/jetbrains/kotlinx/dataframe/io/NameRepairStrategy;ZZILjava/lang/Object;)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public static synthetic fun readExcel-Q2e6U8A$default (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Lorg/jetbrains/kotlinx/dataframe/io/NameRepairStrategy;ZZILjava/lang/Object;)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public static synthetic fun readExcel-Q2e6U8A$default (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Ljava/net/URL;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Lorg/jetbrains/kotlinx/dataframe/io/NameRepairStrategy;ZZILjava/lang/Object;)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public static synthetic fun readExcel-Q2e6U8A$default (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Ljava/nio/file/Path;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Lorg/jetbrains/kotlinx/dataframe/io/NameRepairStrategy;ZZILjava/lang/Object;)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public static final synthetic fun readExcel-ssqQo1E (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Ljava/io/File;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Lorg/jetbrains/kotlinx/dataframe/io/NameRepairStrategy;Z)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public static final synthetic fun readExcel-ssqQo1E (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Ljava/io/InputStream;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Lorg/jetbrains/kotlinx/dataframe/io/NameRepairStrategy;Z)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public static final synthetic fun readExcel-ssqQo1E (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Lorg/jetbrains/kotlinx/dataframe/io/NameRepairStrategy;Z)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public static final synthetic fun readExcel-ssqQo1E (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Ljava/net/URL;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Lorg/jetbrains/kotlinx/dataframe/io/NameRepairStrategy;Z)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public static synthetic fun readExcel-ssqQo1E$default (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Ljava/io/File;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Lorg/jetbrains/kotlinx/dataframe/io/NameRepairStrategy;ZILjava/lang/Object;)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public static synthetic fun readExcel-ssqQo1E$default (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Ljava/io/InputStream;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Lorg/jetbrains/kotlinx/dataframe/io/NameRepairStrategy;ZILjava/lang/Object;)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public static synthetic fun readExcel-ssqQo1E$default (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Lorg/jetbrains/kotlinx/dataframe/io/NameRepairStrategy;ZILjava/lang/Object;)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public static synthetic fun readExcel-ssqQo1E$default (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Ljava/net/URL;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Lorg/jetbrains/kotlinx/dataframe/io/NameRepairStrategy;ZILjava/lang/Object;)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
|
||||
public static final fun toFormattingOptions-lk1XfQA (Ljava/lang/String;Lorg/apache/poi/ss/usermodel/DataFormatter;)Lorg/jetbrains/kotlinx/dataframe/io/FormattingOptions;
|
||||
public static synthetic fun toFormattingOptions-lk1XfQA$default (Ljava/lang/String;Lorg/apache/poi/ss/usermodel/DataFormatter;ILjava/lang/Object;)Lorg/jetbrains/kotlinx/dataframe/io/FormattingOptions;
|
||||
public static final fun writeExcel (Lorg/jetbrains/kotlinx/dataframe/DataFrame;Ljava/io/File;Lkotlin/jvm/functions/Function2;Ljava/lang/String;ZLorg/jetbrains/kotlinx/dataframe/io/WorkBookType;Z)V
|
||||
public static final fun writeExcel (Lorg/jetbrains/kotlinx/dataframe/DataFrame;Ljava/io/OutputStream;Lkotlin/jvm/functions/Function2;Ljava/lang/String;ZLorg/apache/poi/ss/usermodel/Workbook;)V
|
||||
public static final fun writeExcel (Lorg/jetbrains/kotlinx/dataframe/DataFrame;Ljava/lang/String;Lkotlin/jvm/functions/Function2;Ljava/lang/String;ZLorg/jetbrains/kotlinx/dataframe/io/WorkBookType;Z)V
|
||||
public static final fun writeExcel (Lorg/jetbrains/kotlinx/dataframe/DataFrame;Ljava/nio/file/Path;Lkotlin/jvm/functions/Function2;Ljava/lang/String;ZLorg/jetbrains/kotlinx/dataframe/io/WorkBookType;Z)V
|
||||
public static final fun writeExcel (Lorg/jetbrains/kotlinx/dataframe/DataFrame;Lorg/apache/poi/ss/usermodel/Workbook;Lkotlin/jvm/functions/Function2;Ljava/lang/String;Z)Lorg/apache/poi/ss/usermodel/Sheet;
|
||||
public static synthetic fun writeExcel$default (Lorg/jetbrains/kotlinx/dataframe/DataFrame;Ljava/io/File;Lkotlin/jvm/functions/Function2;Ljava/lang/String;ZLorg/jetbrains/kotlinx/dataframe/io/WorkBookType;ZILjava/lang/Object;)V
|
||||
public static synthetic fun writeExcel$default (Lorg/jetbrains/kotlinx/dataframe/DataFrame;Ljava/io/OutputStream;Lkotlin/jvm/functions/Function2;Ljava/lang/String;ZLorg/apache/poi/ss/usermodel/Workbook;ILjava/lang/Object;)V
|
||||
public static synthetic fun writeExcel$default (Lorg/jetbrains/kotlinx/dataframe/DataFrame;Ljava/lang/String;Lkotlin/jvm/functions/Function2;Ljava/lang/String;ZLorg/jetbrains/kotlinx/dataframe/io/WorkBookType;ZILjava/lang/Object;)V
|
||||
public static synthetic fun writeExcel$default (Lorg/jetbrains/kotlinx/dataframe/DataFrame;Ljava/nio/file/Path;Lkotlin/jvm/functions/Function2;Ljava/lang/String;ZLorg/jetbrains/kotlinx/dataframe/io/WorkBookType;ZILjava/lang/Object;)V
|
||||
public static synthetic fun writeExcel$default (Lorg/jetbrains/kotlinx/dataframe/DataFrame;Lorg/apache/poi/ss/usermodel/Workbook;Lkotlin/jvm/functions/Function2;Ljava/lang/String;ZILjava/lang/Object;)Lorg/apache/poi/ss/usermodel/Sheet;
|
||||
}
|
||||
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
plugins {
|
||||
with(convention.plugins) {
|
||||
alias(kotlinJvm8)
|
||||
}
|
||||
with(libs.plugins) {
|
||||
alias(publisher)
|
||||
alias(binary.compatibility.validator)
|
||||
}
|
||||
}
|
||||
|
||||
group = "org.jetbrains.kotlinx"
|
||||
|
||||
dependencies {
|
||||
api(projects.core)
|
||||
api(libs.poi)
|
||||
|
||||
// for writing DataFrame/DataRow -> JSON in Excel cells
|
||||
// can safely be excluded when writing only flat dataframes
|
||||
api(projects.dataframeJson)
|
||||
|
||||
implementation(libs.poi.ooxml)
|
||||
|
||||
implementation(libs.kotlin.datetimeJvm)
|
||||
|
||||
testImplementation(libs.junit)
|
||||
testImplementation(projects.dataframeJson)
|
||||
testImplementation(libs.kotestAssertions) {
|
||||
exclude("org.jetbrains.kotlin", "kotlin-stdlib-jdk8")
|
||||
}
|
||||
}
|
||||
|
||||
kotlinPublications {
|
||||
publication {
|
||||
publicationName = "dataframeExcel"
|
||||
artifactId = project.name
|
||||
description = "Excel support for Kotlin DataFrame"
|
||||
packageName = artifactId
|
||||
}
|
||||
}
|
||||
+1055
File diff suppressed because it is too large
Load Diff
+1
@@ -0,0 +1 @@
|
||||
org.jetbrains.kotlinx.dataframe.io.Excel
|
||||
+244
@@ -0,0 +1,244 @@
|
||||
package org.jetbrains.kotlinx.dataframe.io
|
||||
|
||||
import io.kotest.assertions.throwables.shouldThrow
|
||||
import io.kotest.matchers.shouldBe
|
||||
import kotlinx.datetime.LocalDateTime
|
||||
import org.apache.poi.ss.usermodel.WorkbookFactory
|
||||
import org.jetbrains.kotlinx.dataframe.DataFrame
|
||||
import org.jetbrains.kotlinx.dataframe.api.concat
|
||||
import org.jetbrains.kotlinx.dataframe.api.convert
|
||||
import org.jetbrains.kotlinx.dataframe.api.dataFrameOf
|
||||
import org.jetbrains.kotlinx.dataframe.api.toColumn
|
||||
import org.jetbrains.kotlinx.dataframe.api.toInt
|
||||
import org.jetbrains.kotlinx.dataframe.exceptions.DuplicateColumnNamesException
|
||||
import org.jetbrains.kotlinx.dataframe.impl.DataFrameSize
|
||||
import org.jetbrains.kotlinx.dataframe.size
|
||||
import org.jetbrains.kotlinx.dataframe.type
|
||||
import org.junit.Test
|
||||
import java.net.URL
|
||||
import java.nio.file.Files
|
||||
import kotlin.reflect.typeOf
|
||||
|
||||
@Suppress("ktlint:standard:argument-list-wrapping")
|
||||
class XlsxTest {
|
||||
|
||||
fun testResource(resourcePath: String): URL = this::class.java.classLoader.getResource(resourcePath)!!
|
||||
|
||||
@Test
|
||||
fun `numerical columns`() {
|
||||
DataFrame.readExcel(testResource("sample.xls"), "Sheet1") shouldBe
|
||||
dataFrameOf("col1", "col2")(1.0, 2.0)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `column with empty values`() {
|
||||
val readExcel = DataFrame.readExcel(testResource("empty_cell.xls"), "Sheet1")
|
||||
readExcel shouldBe dataFrameOf("col1", "col2")(1.0, null)
|
||||
readExcel["col2"].hasNulls() shouldBe true
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `empty cell is null`() {
|
||||
val wb = WorkbookFactory.create(testResource("empty_cell.xls").openStream())
|
||||
wb.getSheetAt(0).getRow(1).getCell(1) shouldBe null
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `column with empty header`() {
|
||||
val df = DataFrame.readExcel(testResource("sample2.xlsx"), "Sheet1", columns = "A:C")
|
||||
df shouldBe dataFrameOf("col1", "col2", "C")(1.0, null, 3.0)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `column with empty header and with formatting`() {
|
||||
val df = DataFrame.readExcel(
|
||||
testResource("sample2.xlsx"),
|
||||
"Sheet1",
|
||||
columns = "A:C",
|
||||
stringColumns = StringColumns("A:C"),
|
||||
)
|
||||
df shouldBe dataFrameOf("col1", "col2", "C")("1", null, "3")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `limit row number`() {
|
||||
val df = DataFrame.readExcel(testResource("sample4.xls"), "Sheet1", rowsCount = 5)
|
||||
val column = List(5) { (it + 1).toDouble() }.toColumn("col1")
|
||||
df shouldBe dataFrameOf(column)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `first sheet is default sheet`() {
|
||||
DataFrame.readExcel(testResource("sample.xls"), "Sheet1") shouldBe
|
||||
DataFrame.readExcel(testResource("sample.xls"))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `read and write are isomorphic for string, double and null values`() {
|
||||
val temp = Files.createTempFile("excel", ".xlsx").toFile()
|
||||
val df = dataFrameOf("col1", "col2")(
|
||||
"string value", 3.2,
|
||||
"string value 1", null,
|
||||
)
|
||||
val extendedDf = List(10) { df }.concat()
|
||||
extendedDf.writeExcel(temp)
|
||||
val extendedDf1 = DataFrame.readExcel(temp)
|
||||
extendedDf shouldBe extendedDf1
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `read date time`() {
|
||||
val df = DataFrame.read(testResource("datetime.xlsx"))
|
||||
df["time"].type() shouldBe typeOf<LocalDateTime>()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `write date time`() {
|
||||
val df = DataFrame.read(testResource("datetime.xlsx"))
|
||||
val temp = Files.createTempFile("excel", ".xlsx").toFile()
|
||||
df.writeExcel(temp)
|
||||
DataFrame.readExcel(temp) shouldBe df
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `read header on second row`() {
|
||||
val df = DataFrame.readExcel(testResource("custom_header_position.xlsx"), skipRows = 1)
|
||||
df.columnNames() shouldBe listOf("header1", "header2")
|
||||
df.size() shouldBe DataFrameSize(2, 3)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `consider skipRows when obtaining column indexes`() {
|
||||
val df = DataFrame.readExcel(testResource("header.xlsx"), skipRows = 6, rowsCount = 1)
|
||||
df.columnNames() shouldBe listOf(
|
||||
"Well",
|
||||
"Well Position",
|
||||
"Omit",
|
||||
"Sample Name",
|
||||
"Target Name",
|
||||
"Task",
|
||||
"Reporter",
|
||||
"Quencher",
|
||||
)
|
||||
df shouldBe dataFrameOf(
|
||||
"Well",
|
||||
"Well Position",
|
||||
"Omit",
|
||||
"Sample Name",
|
||||
"Target Name",
|
||||
"Task",
|
||||
"Reporter",
|
||||
"Quencher",
|
||||
)(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `use indexes math to skip rows`() {
|
||||
val df = DataFrame.readExcel(testResource("repro.xls"), skipRows = 4)
|
||||
df.columnNames() shouldBe listOf("a")
|
||||
df.rowsCount() shouldBe 2
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `throw when there are no defined cells on header row`() {
|
||||
shouldThrow<IllegalStateException> {
|
||||
DataFrame.readExcel(testResource("xlsx6.xlsx"), skipRows = 4)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `write to new sheet when keepFile is true`() {
|
||||
val names = (1..5).map { "column$it" }
|
||||
val df = dataFrameOf(names).randomDouble(7)
|
||||
val fileLoc = Files.createTempFile("generated_wb", ".xlsx").toFile()
|
||||
|
||||
df.writeExcel(fileLoc, sheetName = "TestSheet1")
|
||||
df.writeExcel(fileLoc, sheetName = "TestSheet2", keepFile = true)
|
||||
|
||||
val testSheet1Df = DataFrame.readExcel(fileLoc, sheetName = "TestSheet1")
|
||||
val testSheet2Df = DataFrame.readExcel(fileLoc, sheetName = "TestSheet2")
|
||||
|
||||
testSheet1Df.columnNames() shouldBe testSheet2Df.columnNames()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `read xlsx file with duplicated columns and repair column names`() {
|
||||
shouldThrow<DuplicateColumnNamesException> {
|
||||
DataFrame.readExcel(testResource("iris_duplicated_column.xlsx"))
|
||||
}
|
||||
|
||||
val df = DataFrame.readExcel(
|
||||
testResource("iris_duplicated_column.xlsx"),
|
||||
nameRepairStrategy = NameRepairStrategy.MAKE_UNIQUE,
|
||||
)
|
||||
df.columnNames() shouldBe
|
||||
listOf(
|
||||
"Sepal.Length",
|
||||
"Sepal.Width",
|
||||
"C",
|
||||
"Petal.Length",
|
||||
"Petal.Width",
|
||||
"Species",
|
||||
"Other.Width",
|
||||
"Species1",
|
||||
"I",
|
||||
"Other.Width1",
|
||||
"Species2",
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `read xlsx file that has cells with formulas that return numbers and strings`() {
|
||||
val df = DataFrame.readExcel(testResource("formula_cell.xlsx"))
|
||||
df.columnNames() shouldBe listOf("Number", "Greater than 5", "Multiplied by 10", "Divided by 5")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `read mixed column`() {
|
||||
val df = DataFrame.readExcel(
|
||||
testResource("mixed_column.xlsx"),
|
||||
stringColumns = StringColumns("A"),
|
||||
)
|
||||
df["col1"].type() shouldBe typeOf<String>()
|
||||
df shouldBe dataFrameOf("col1")("100", "A100", "B100", "C100")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `read with default header unstructured excel file`() {
|
||||
val df = DataFrame.readExcel(
|
||||
testResource("unstructured_example.xlsx"),
|
||||
firstRowIsHeader = false,
|
||||
)
|
||||
df.columnNames() shouldBe listOf("A", "B", "C", "D", "E", "F", "G", "H", "I", "J")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `should work read with default header unstructured excel file with skipRow params`() {
|
||||
val df = DataFrame.readExcel(
|
||||
testResource("unstructured_example.xlsx"),
|
||||
firstRowIsHeader = false,
|
||||
skipRows = 2,
|
||||
rowsCount = 1,
|
||||
parseEmptyAsNull = false,
|
||||
)
|
||||
|
||||
df shouldBe dataFrameOf(
|
||||
"A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
|
||||
)(
|
||||
"Field 3: ", "", "TEAM 1", "", "", "", "", "Staff Code:", "Staff 1", "",
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `read columns with nulls`() {
|
||||
val df = DataFrame.readExcel(
|
||||
testResource("withNulls.xlsx"),
|
||||
).convert("age").toInt()
|
||||
df shouldBe dataFrameOf(
|
||||
"name" to listOf("Alice", null, "Bob"),
|
||||
"age" to listOf(23, 27, null),
|
||||
)
|
||||
df["name"].type shouldBe typeOf<String?>()
|
||||
df["age"].type shouldBe typeOf<Int?>()
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user