Skip to content

Handle CSV ( comma seperated values ) files in koltin multiplatform

License

Notifications You must be signed in to change notification settings

ryinex/kotlin-csv

Repository files navigation

Kotlin CSV

A lightweight Kotlin Multiplatform library for reading and writing CSV files with a simple, intuitive API. Supports Android, Desktop JVM, and Web (Wasm/JS) platforms.

Installation

Add the following dependency to your project:

// Kotlin multiplatform
kotlin {
    sourceSets {
        commonMain.dependencies {
            implementation("com.ryinex.kotlin:csv:<latest-version>")
        }
    }
}

// Regular kotlin project
dependencies {
    implementation("com.ryinex.kotlin:csv:<latest-version>")
}

Description

Kotlin CSV provides a streamlined way to handle CSV files across different platforms. Key features include:

  • Multiplatform Support: Works seamlessly on Android, Desktop JVM, and Web (Wasm/JS) platforms
  • Simple API: Intuitive builder pattern for creating CSV files
  • Type-Safe Operations: Strongly typed column definitions
  • Flexible Reading/Writing: Support for both reading existing CSV files and creating new ones from the filesystem
  • Custom Column Mapping: Define custom column mappings with type conversion
  • Header Support: Optional header row handling

Example usage:

// Creating a CSV file
val csvFile = CsvReadWrite.builder(items, isTitled = true)
    .column("Name") { index, item -> item.name }
    .column("Age") { index, item -> item.age }
    .column("Adult") { index, item -> item.age >= 18 }
    .build("output.csv")

// Raw CSV data as string
csvFile.raw()

// Saving CSV file
CsvReadWrite.save(csvFile)

// Reading CSV file
val csvFile = CsvReadWrite.open()

Note for Android Projects: Initialize CsvReadWrite in your Activity or Fragment if you plan to use open and save filesystem functionalities:

// In Activity
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    CsvReadWrite.bind(this)
}

// In Fragment
override fun onCreateView(/*.....*/): View {
    // ...
    CsvReadWrite.bind(this)
    return<VIEW>
}

The binding ensures proper lifecycle management for CSV filesystem operations in your Android application.

Screenshots

Desktop

java.awt.FileDialog Open Dialog java.awt.FileDialog Save Dialog
Open CSV Operation Save CSV Operation

Browser

Native HTMLInputElement to load files Native <a> tag to save and download the file
Open CSV Operation Save CSV Operation

Android

Android System Access Framework OpenDocument Android System Access Framework CreateDocument
Open CSV on Android Save CSV on Android

TODO

  • iOS Support

License

Apache License 2.0 - See LICENSE for details.

About

Handle CSV ( comma seperated values ) files in koltin multiplatform

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages