![]() |
||
---|---|---|
CSV.xcodeproj | ||
Sources | ||
Tests | ||
.gitignore | ||
.swift-version | ||
.swiftlint.yml | ||
.travis.yml | ||
CSV.swift.podspec | ||
LICENSE | ||
Package.swift | ||
README.md |
README.md
CSV.swift
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.