All Projects → vigneshuvi → Swiftcsvexport

vigneshuvi / Swiftcsvexport

Licence: mit
Swift CSV Export is rich features framework and it helpful to read and write CSV in simple way.

Programming Languages

swift
15916 projects

Projects that are alternatives of or similar to Swiftcsvexport

Tkrubberindicator
A rubber animation pagecontrol
Stars: ✭ 1,337 (+1292.71%)
Mutual labels:  cocoapods, carthage
Pluggableappdelegate
!! No longer supported !! A lightweight service-oriented AppDelegate for iOS, made in Swift.
Stars: ✭ 96 (+0%)
Mutual labels:  cocoapods, carthage
Hdwallet
Simple Swift library for creating HD cryptocurrencies wallets and working with crypto Coins/ERC20 tokens.
Stars: ✭ 80 (-16.67%)
Mutual labels:  cocoapods, carthage
Swiftforms
A small and lightweight library written in Swift that allows you to easily create forms.
Stars: ✭ 1,329 (+1284.38%)
Mutual labels:  cocoapods, carthage
Xmlmapper
A simple way to map XML to Objects written in Swift
Stars: ✭ 90 (-6.25%)
Mutual labels:  cocoapods, carthage
Hover
🎈 The smartest floating button
Stars: ✭ 81 (-15.62%)
Mutual labels:  cocoapods, carthage
Yndropdownmenu
✨ Awesome Dropdown menu for iOS with Swift 5.0
Stars: ✭ 1,259 (+1211.46%)
Mutual labels:  cocoapods, carthage
Dikit
Dependency Injection Framework for Swift, inspired by KOIN.
Stars: ✭ 77 (-19.79%)
Mutual labels:  cocoapods, carthage
Mbpopup
macOS status bar popups done right 😎
Stars: ✭ 89 (-7.29%)
Mutual labels:  cocoapods, carthage
Networking
Easy HTTP Networking in Swift a NSURLSession wrapper with image caching support
Stars: ✭ 1,269 (+1221.88%)
Mutual labels:  cocoapods, carthage
Silentscrolly
Scroll to hide navigationBar, tabBar and toolBar.
Stars: ✭ 79 (-17.71%)
Mutual labels:  cocoapods, carthage
Quick
The Swift (and Objective-C) testing framework.
Stars: ✭ 9,303 (+9590.63%)
Mutual labels:  cocoapods, carthage
Soundable
Soundable allows you to play sounds, single and in sequence, in a very easy way
Stars: ✭ 78 (-18.75%)
Mutual labels:  cocoapods, carthage
Cocoapods Playgrounds
🃏 Generate Swift Playgrounds for any library.
Stars: ✭ 1,307 (+1261.46%)
Mutual labels:  cocoapods, carthage
Swiftlinkpreview
It makes a preview from an URL, grabbing all the information such as title, relevant texts and images.
Stars: ✭ 1,216 (+1166.67%)
Mutual labels:  cocoapods, carthage
Magnetic
SpriteKit Floating Bubble Picker (inspired by Apple Music) 🧲
Stars: ✭ 1,252 (+1204.17%)
Mutual labels:  cocoapods, carthage
Ctshowcase
A simple to use Showcase library that can highlight arbitrary views in an iOS app
Stars: ✭ 73 (-23.96%)
Mutual labels:  cocoapods, carthage
Notificationz
📡 Helping you own NotificationCenter in Swift!
Stars: ✭ 74 (-22.92%)
Mutual labels:  cocoapods, carthage
Freedom
The Freedom to Open URLs in Third-Party Browsers on iOS with Custom UIActivity Subclasses.
Stars: ✭ 85 (-11.46%)
Mutual labels:  cocoapods, carthage
Swiftyattributes
A Swifty API for attributed strings
Stars: ✭ 1,303 (+1257.29%)
Mutual labels:  cocoapods, carthage

CSV Swift Version Language Swift Swift Package Manager compatible Carthage compatible

SwiftCSVExport

Swift CSV Export is lightweight & rich features framework and it helpful to create, read and write CSV files in simple way. It supports both Objective-C and Swift projects.

Features

  • Support swift 4, 4.2 and 5 and latest Xcode(12)
  • Able to give CSV file name, headers and rows using property keys.
  • Able to convert JSON string into CSV.
  • Able to Read the CSV file and convert to NSDictionary.
  • Enable/Disable strict validation while write CSV file.
  • Able to Read the CSV file and convert to CSV class(Object Oriented Approach).
  • Support CocoaPods, mac OS and Vapor framework(Swift Package Manager).
  • Able to encoding CSV based on String.Encoding Type(utf8, ascii, unicode, utf16, etc) Refer: String.Encoding.
  • Able to view the exported CSV documents in iOS Files app by enabling the configuration in your project.
  • Handled the punctuation(\n, \t, \t, and ,) characters in CSV file.

Swift Version

Supported swift 4, 4.2 and 5 and latest Xcode

pod 'SwiftCSVExport' , '= 2.0.2' // Swift 4
pod 'SwiftCSVExport' , '= 2.0.3' // Swift 4.2
pod 'SwiftCSVExport' , '= 2.3.0' // Swift 5
pod 'SwiftCSVExport' , '= 2.6.0' // Latest Xcode 12



iOS/MacOS import headers

First thing is to import the framework. See the Installation instructions on how to add the framework to your project.

Refer iOS Examples:Here. Refer Mac Examples:Here.

//iOS - Objective-C
@import SwiftCSVExport;

//iOS - Swift
import SwiftCSVExport

//macOS - Old swift version < 4
import SwiftCSVExportOSX 

//macOS - New swift version > 4
import SwiftCSVExport

Configuration

  • Add following keys in your project .plist file to view CSV exported CSV documents in iOS Files app.
Bundle display name - "APPLICATION NAME"
Application requires iPhone environment - YES
Supports opening documents in place - YES
Application supports iTunes file sharing - YES

Examples:

Example 1 - Objective-C

// First User Object
NSMutableDictionary *user1 = [NSMutableDictionary new];
[user1 setValue:@"vignesh" forKey:@"name" ];
[user1 setValue:@"[email protected]" forKey: @"email"];


// Secound User Object
NSMutableDictionary *user2 = [NSMutableDictionary new];
[user2 setValue:@"vinoth" forKey:@"name" ];
[user2 setValue:@"[email protected]" forKey: @"email"];


// CSV fields Array
NSMutableArray *fields = [NSMutableArray new];
[fields addObject:@"name"];
[fields addObject:@"email"];

// CSV rows Array
NSMutableArray *data = [NSMutableArray new];
[data addObject:user1];
[data addObject:user2];


NSString *userpath = [[CSVExport export] exportCSV:@"userlist1" fields:fields values:data];
NSLog(@"%@",userpath);

NSString *namepath =   [[CSVExport export] exportCSV:@"userlist1" fields:@[@"name", @"email"] values:data];
NSLog(@"%@",namepath);


// Able to convert JSON string into CSV.
NSString *string  = @"[{\"name\":\"vignesh\",\"email\":\"[email protected]\"},{\"name\":\"vinoth\",\"email\":\"[email protected]\"}]";
NSString *filePath   = [[CSVExport export] exportCSVString:@"userlist1"fields:fields values:string];

NSLog(@"%@",filePath);

Example 2 - Swift - Object Oriented Approach

// First User Object
let user1:NSMutableDictionary = NSMutableDictionary()
user1.setObject(107, forKey: "userid" as NSCopying);
user1.setObject("vignesh", forKey: "name" as NSCopying);
user1.setObject("[email protected]", forKey: "email" as NSCopying);
user1.setObject(true, forKey:"isValidUser" as NSCopying)
user1.setObject("Hi 'Vignesh!' \nhow are you? \t Shall we meet tomorrow? \r Thanks ", forKey: "message" as NSCopying);
user1.setObject(571.05, forKey: "balance" as NSCopying);

// Secound User Object
let user2:NSMutableDictionary = NSMutableDictionary()
user2.setObject(108, forKey: "userid" as NSCopying);
user2.setObject("vinoth", forKey: "name" as NSCopying);
user2.setObject(false, forKey:"isValidUser" as NSCopying)
user2.setObject("[email protected]", forKey: "email" as NSCopying);
user2.setObject("Hi 'Vinoth!', \nHow are you? \t Shall we meet tomorrow? \r Thanks ", forKey: "message" as NSCopying);
user2.setObject(567.50, forKey: "balance" as NSCopying);

// Add fields into columns of CSV headers
let header = ["userid", "name", "email", "message", "isValidUser","balance"]


// Add dictionary into rows of CSV Array
let data:NSMutableArray  = NSMutableArray()
data.add(user1);
data.add(user2);

// Create a object for write CSV
let writeCSVObj = CSV()
writeCSVObj.rows = data
writeCSVObj.delimiter = DividerType.comma.rawValue
writeCSVObj.fields = header as NSArray
writeCSVObj.name = "userlist"

// Write File using CSV class object
let result = exportCSV(writeCSVObj);
if result.isSuccess {
    guard let filePath =  result.value else {
        print("Export Error: \(String(describing: result.value))")
        return
    }
    self.testWithFilePath(filePath, rowCount: data.count, columnCount: header.count)
    print("File Path: \(filePath)")

    // Read File and convert as CSV class object
    let readCSVObj = readCSVObject(filePath);
     
    // Use 'SwiftLoggly' pod framework to print the Dictionary
    loggly(LogType.Info, text: readCSVObj.name)
} else {
    print("Export Error: \(String(describing: result.value))")
}




Write & Read Output:

File Path: xxxxxx/xxxxxxx/Documents/Exports/userlist.csv

userid,name,email,message,isValidUser,balance
107,  "vignesh",  "[email protected]",  "Hi 'Vignesh!' \nhow are you? \t Shall we meet tomorrow? \r Thanks ",  1,  571.05
108,  "vinoth",  "[email protected]",  "Hi 'Vinoth!', \nHow are you? \t Shall we meet tomorrow? \r Thanks ",  0,  567.5
109,  "John",  "[email protected]",  "Hi 'John!' \nHow are you? \t Shall we meet tomorrow? \r Thanks ",  1,  105.41


[💙 Info -  Jan 2, 2018, 4:52:28 PM]: userlist.csv


Example 3 - Swift - Enable Strict Validation

// Enable Strict Validation
CSVExport.export.enableStrictValidation = true

// Able to convert JSON string into CSV.
let string = "[{\"name\":\"vignesh\",\"email\":\"[email protected]\"},{\"name\":\"vinoth\",\"email\":\"[email protected]\"}]";

// Write File using CSV class object
let result1 = exportCSV("userlist", fields:["userid","name","email"], values:string);
XCTAssertEqual(false, result1.isSuccess)
if result1.isSuccess {
    guard let filePath =  result1.value else {
        print("Export Error: \(String(describing: result1.value))")
        return
    }
    print("File Path: \(filePath)")
    
} else {
    print("Export Error: \(String(describing: result1.value))")
}


Write Output:

Export Error: Optional("Expected 3 columns, But Parsed 2 columns on row 1")

Example 4 - Swift

// Read File
let fileDetails = readCSV(filePath);

// Use 'SwiftLoggly' pod framework to print the Dictionary
if fileDetails.allKeys.count > 0 {
    loggly(LogType.Info, dictionary: fileDetails)
}


Read Output:

[💙 Info -  Jan 2, 2018, 4:52:21 PM]: {
  "fields" : [
    "userid",
    "name",
    "email",
    "message",
    "isValidUser",
    "balance"
  ],
  "rows" : [
    {
      "email" : "\"[email protected]\"",
      "message" : "\"Hi 'Vignesh!' \\nhow are you? \\t Shall we meet tomorrow? \\r Thanks \"",
      "userid" : 107,
      "name" : "\"vignesh\"",
      "isValidUser" : 1,
      "balance" : 571.05
    },
    {
      "email" : "\"[email protected]\"",
      "message" : "\"Hi 'Vinoth!', \\nHow are you? \\t Shall we meet tomorrow? \\r Thanks \"",
      "userid" : 108,
      "name" : "\"vinoth\"",
      "isValidUser" : 0,
      "balance" : 567.5
    },
    {
      "email" : "\"[email protected]\"",
      "message" : "\"Hi 'John!' \\nHow are you? \\t Shall we meet tomorrow? \\r Thanks \"",
      "userid" : 109,
      "name" : "\"John\"",
      "isValidUser" : 1,
      "balance" : 105.41
    }
  ],
  "name" : "userlist.csv",
  "divider" : ","
}

That will create a CSV file in the proper directory on both OS X and iOS.

OS X CSV files will be created in the OS X Exports directory (found under: /Library/Exports). The iOS CSV files will be created in your apps document directory under a folder called Exports.

Configuration

There are a few configurable options in SwiftCSVExport.

//Set the name of the csv file
CSVExport.export.fileName = "Sample" //default is "csvfile"

//Set the directory in which the csv files will be written
CSVExport.export.directory = "/Library/XXX-folder-name-XXX" //default is the standard exporting directory for each platform.

// Able to set strict validation while create a new CSV file.
CSVExport.export.enableStrictValidation = true


Installation

CocoaPods

Check out Get Started tab on cocoapods.org.

To use SwiftCSVExport in your project add the following 'Podfile' to your project

  source 'https://github.com/CocoaPods/Specs.git'
  platform :ios, '8.0'
  use_frameworks!

  pod 'SwiftCSVExport'

Then run:

pod install || pod update

Carthage

To use SwiftCSVExport in your project create/update 'Cartfile.private' file into your project

// Require version 2.x

github "vigneshuvi/SwiftCSVExport"

Then run:

carthage update

Swift Package Manager for Vapor

You need to add to dependencies in your 'Package.swift' and fetch Swift module using terminal comment.

// Vapor

dependencies: [ .Package(url: "https://github.com/vigneshuvi/SwiftCSVExport.git", majorVersion: 2, minor: 0) ],

Then run:

vapor build || vapor xcode

// Importing header

import SwiftCSVExport

License

SwiftCSVExport is licensed under the MIT License.

Contact

Vignesh Kumar

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].