2011-11-29 65 views

回答

2

CHCSVParser將讀取和寫入CSV在OS X和iOS的文件。它帶有一些如何使用它的例子。

15

下面是一個簡單的代碼來生成CSV文件:

NSArray *csvArray = [myTextView.text componentsSeparatedByString:@"\n"]; 
NSString *csvString = [csvArray componentsJoinedByString:@","]; 
NSLog(@"csvString:%@",csvString); 

// Create .csv file and save in Documents Directory. 

//create instance of NSFileManager 
NSFileManager *fileManager = [NSFileManager defaultManager]; 

//create an array and store result of our search for the documents directory in it 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 

//create NSString object, that holds our exact path to the documents directory 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSLog(@"Document Dir: %@",documentsDirectory); 

NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.csv", @"userdata"]]; //add our file to the path 
[fileManager createFileAtPath:fullPath contents:[csvString dataUsingEncoding:NSUTF8StringEncoding] attributes:nil]; //finally save the path (file) 

NJOY ... :)

+1

這不會正確處理數據中的逗號。例如,如果要編碼數據「蓋茨,比爾」和「微軟」,它會錯誤地生成字符串「蓋茨,比爾,微軟」,使其看起來像有3列,實際上只有2列。 – Senseful

4

下面我用於生成CSV代碼。

NSMutableString *mainString=[[NSMutableString alloc]initWithString:@""]; 
    for(int i=0;i<[commentArray count];i++) { 
     NSString *string=[[commentArray objectAtIndex:i]objectForKey:@"cmtName"]; 
     string=[string stringByReplacingOccurrencesOfString:@"\"" withString:@"\"\""]; 
     [mainString appendFormat:@"\"%@\"",string]; 

     string=[[commentArray objectAtIndex:i]objectForKey:@"cmtDesc"]; 
     string=[string stringByReplacingOccurrencesOfString:@"\"" withString:@"\"\""]; 
     [mainString appendFormat:@",\"%@\"",string]; 

     string=[[commentArray objectAtIndex:i]objectForKey:@"cmtType"]; 
     string=[string stringByReplacingOccurrencesOfString:@"\"" withString:@"\"\""]; 
     [mainString appendFormat:@",\"%@\"",string]; 

     [mainString appendFormat:@",\"%@\"",string]; 
     [mainString appendFormat:@"\n"]; 
    } 


    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectoryPath = [paths objectAtIndex:0]; 
    NSString *filePath = [documentsDirectoryPath stringByAppendingPathComponent:@"Docment.conf"]; 


    NSData* settingsData; 
    settingsData = [mainString dataUsingEncoding: NSASCIIStringEncoding]; 

    if ([settingsData writeToFile:filePath atomically:YES]) 
     NSLog(@"writeok"); 

以及導入CSV使用此

https://github.com/davedelong/CHCSVParser