Go to file
Yasuhiro Hatta be82f7144c Update podspec summary 2017-07-09 14:38:37 +09:00
CSV.xcodeproj [codecov] Update xcscheme 2017-07-09 14:28:56 +09:00
Sources Update comment 2017-07-09 14:38:09 +09:00
Tests Add enum Newline for Writer 2017-06-19 02:42:35 +09:00
.gitignore Initial commit 2016-06-11 02:10:59 +09:00
.swift-version Update .travis.yml 2017-05-28 13:35:40 +09:00
.swiftlint.yml Keep compatibility with version 1 2017-06-18 15:50:31 +09:00
.travis.yml [codecov] Update .travis.yml 2017-07-09 14:29:10 +09:00
CSV.swift.podspec Update podspec summary 2017-07-09 14:38:37 +09:00
LICENSE Initial commit 2016-06-11 02:10:59 +09:00
Package.swift Add Package.swift 2016-06-11 12:08:43 +09:00
README.md [codecov] Add codecov badge to README.md 2017-07-09 14:32:27 +09:00

README.md

CSV.swift

Build Status codecov

CSV reading and writing library written in Swift.

Usage for reading CSV

From string

import CSV

let csvString = "1,foo\n2,bar"
let csv = try! CSVReader(string: csvString)
while let row = csv.next() {
    print("\(row)")
}
// => ["1", "foo"]
// => ["2", "bar"]

From file

import Foundation
import CSV

let stream = InputStream(fileAtPath: "/path/to/file.csv")!
let csv = try! CSVReader(stream: stream)
while let row = csv.next() {
    print("\(row)")
}

Getting the header row

import CSV

let csvString = "id,name\n1,foo\n2,bar"
let csv = try! CSVReader(string: csvString,
                         hasHeaderRow: true) // It must be true.

let headerRow = csv.headerRow!
print("\(headerRow)") // => ["id", "name"]

while let row = csv.next() {
    print("\(row)")
}
// => ["1", "foo"]
// => ["2", "bar"]

Get the field value using subscript

import CSV

let csvString = "id,name\n1,foo"
let csv = try! CSVReader(string: csvString,
                         hasHeaderRow: true) // It must be true.

while csv.next() != nil {
    print("\(csv["id"]!)")   // => "1"
    print("\(csv["name"]!)") // => "foo"
}

Provide the character encoding

If you use a file path, you can provide the character encoding to initializer.

import Foundation
import CSV

let stream = InputStream(fileAtPath: "/path/to/file.csv")!
let csv = try! CSV(stream: stream,
                   codecType: UTF16.self,
                   endian: .big)

Usage for writing CSV

Write to memory and get a CSV String

import Foundation
import CSV

let stream = OutputStream(toMemory: ())
let csv = try! CSVWriter(stream: stream)

// Write a row
try! csv.write(row: ["id", "name"])

// Write fields separately
csv.beginNewRow()
try! csv.write(field: "1")
try! csv.write(field: "foo")
csv.beginNewRow()
try! csv.write(field: "2")
try! csv.write(field: "bar")

csv.stream.close()

// Get a String
let csvData = stream.property(forKey: .dataWrittenToMemoryStreamKey) as! NSData
let csvString = String(data: Data(referencing: csvData), encoding: .utf8)!
print(csvString)
// => "id,name\n1,foo\n2,bar"

Write to file

import Foundation
import CSV

let stream = OutputStream(toFileAtPath: "/path/to/file.csv", append: false)!
let csv = try! CSVWriter(stream: stream)

try! csv.write(row: ["id", "name"])
try! csv.write(row: ["1", "foo"])
try! csv.write(row: ["1", "bar"])

csv.stream.close()

Installation

CocoaPods

pod 'CSV.swift', '~> 2.0'

Carthage

github "yaslab/CSV.swift" ~> 2.0

Swift Package Manager

import PackageDescription

let package = Package(
    name: "PackageName",
    dependencies: [
        .Package(url: "https://github.com/yaslab/CSV.swift.git", majorVersion: 2, minor: 0)
    ]
)

Reference specification

License

CSV.swift is released under the MIT license. See the LICENSE file for more info.