2014-02-21 69 views
1

在我的应用程序中,我创建了一个.plist文件,但我需要使用存储在此.plist中的数据存储在Excel表中。我需要一种方法来获得这个plist的csv。我试图在网上搜索,但我发现只有转换器允许从csv创建一个plist。我想有一种方法可以直接从我的iPad应用程序生成csv文件。有谁知道一种方法来做到这一点?从NSMutableArray创建一个csv

UPDATE:

+ (void)saveFileFromArray:(NSMutableArray *)promoArray { 
    NSMutableString *target = [@"Nome,Cognome,E-mail,Data di nascita,Indirizzo,Città,Cap,Telefono\n" mutableCopy]; 

    for (NSDictionary *dict in promoArray) { 
     [target appendFormat:@"%@,%@,%@,%@,%@,%@,%@,%@\n",dict[@"name"],dict[@"surname"],dict[@"email"],dict[@"birthdate"],dict[@"address"],dict[@"city"],dict[@"zip"],dict[@"phone"]]; 
    } 
    NSError *error = nil; 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *fileName = [documentsDirectory stringByAppendingPathComponent:@"profiles.csv"]; 

    NSURL *url = [NSURL URLWithString:fileName]; 

    BOOL success = [target writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:&error]; 

    if (!success) { 
     NSLog(@"Errore: %@", error.localizedDescription); 
    } 
} 
+0

在应用程序中将plist转换为CSV,然后导出文件,以便在Excel中访问... http://stackoverflow.com/questions/10119035/create-csv-file-from-array-of- data-in-ios – Tim

回答

1

迭代通过数组,并写出你想,一个字符串的部分。

带有逗号的字符串将有相当大的帮助。马车回报也很好。

当字符串完成。将它写入文件。

NSMutableString *target = [@"head1,head2,head3\n" mutableCopy]; 

for (NSDictionary *dict in array) { 

    [target appendFormat:@"%@,%@,%@\n",dict[@"thing"],dict[@"otherthing"],dict[@"lemming"]]; 

} 

NSError *error = NULL; 

BOOL success = [target writeToURL:somewhere atomically:YES encoding:NSUTF8StringEncoding error:&error]; 

if (!success) { 
    NSLog(@"oh no! - %@",error.localizedDescription); 
} 

该段假定你有NSDictionary阵列但如果它的别的东西的原则是一样的。

对于每个对象都打印出逗号分隔的字符串并以CR结束。

事情你将不得不在现实世界的数据,以防止有

  • 描述与已经是逗号。
  • 描述与CR已在。
+0

谢谢!我刚刚改变了一个指令:'BOOL success = [target writeToURL:somewhere atomically:YES encoding:NSUTF8StringEncoding error:&error];'to'BOOL success = [target writeToFile:fileName atomically:YES encoding:NSUTF8StringEncoding error:&error];'and现在效果很好! – lucgian841

0

只是使用已经开发和测试的框架。我使用https://github.com/davedelong/CHCSVParser,它工作正常。

偶尔,我不得不添加一个或两个特性,但鉴于它是开源的,它并不是什么大不了的事情。