2009-10-03 45 views
1

在我的应用程序iOS中,我需要将一些数据导出为CSV或HTML格式。我怎样才能做到这一点?如何将数据转换为iOS或CSV格式的HTML格式?

+1

能否请您具体了解数据的种类或至少是数据的来源类型? – 2009-10-03 05:26:52

+0

好的。具体而言,我需要从sqlite数据库导出一些数据。 – diana 2009-10-03 05:48:16

回答

4

RegexKitLite自带了如何读取csv文件到NSArrays的一个NSArray一个例子,而在相反的方向走是相当琐碎。

它会是这样的(警告:在浏览器中键入代码):

NSArray * data = ...; //An NSArray of NSArrays of NSStrings 
NSMutableString * csv = [NSMutableString string]; 
for (NSArray * line in data) { 
    NSMutableArray * formattedLine = [NSMutableArray array]; 
    for (NSString * field in line) { 
    BOOL shouldQuote = NO; 
    NSRange r = [field rangeOfString:@","]; 
    //fields that contain a , must be quoted 
    if (r.location != NSNotFound) { 
     shouldQuote = YES; 
    } 
    r = [field rangeOfString:@"\""]; 
    //fields that contain a " must have them escaped to "" and be quoted 
    if (r.location != NSNotFound) { 
     field = [field stringByReplacingOccurrencesOfString:@"\"" withString:@"\"\""]; 
     shouldQuote = YES; 
    } 
    if (shouldQuote == YES) { 
     [formattedLine addObject:[NSString stringWithFormat:@"\"%@\"", field]]; 
    } else { 
     [formattedLine addObject:field]; 
    } 
    } 
    NSString * combinedLine = [formattedLine componentsJoinedByString:@","]; 
    [csv appendFormat:@"%@\n", combinedLine]; 
} 
[csv writeToFile:@"/path/to/file.csv" atomically:NO]; 
+0

ok.How我可以导出为html文件? – diana 2009-10-03 07:55:03

+6

@Edwin HTML只是一种文本格式,所以构建字符串并将其写入文件。我们无法为您编写应用程序... – 2009-10-03 14:19:57

0

CSV - comma separated values.

我通常只是遍历在我的应用程序和输出一组每行的值的数据结构,集合中的值与逗号分隔。

struct person 
{ 
    string first_name; 
    string second_name; 
}; 

person tony = {"tony", "momo"}; 
person john = {"john", "smith"}; 

会是什么样子

tony, momo 
john, smith 
+1

这实际上并没有显示如何从记录到字符串。 – 2009-10-03 06:25:25

2

一般的解决方法是使用stringWithFormat:格式化每一行。据推测,您将此文件写入文件或套接字,在这种情况下,您将在创建文件句柄时将每个字符串的数据表示(请参阅dataUsingEncoding:)写入文件句柄。

如果要格式化很多行,则可能需要使用initWithFormat:和明确的release消息,以避免堆积autorelease池中太多字符串对象而导致内存不足。

在将它们传递给格式化方法之前,始终始终记得正确地转义值

为了编写单元测试,转义(和unescaping一起)是一件非常好的事情。编写一个函数以CSV格式化单行,并将测试用例的结果与正确的输出进行比较。如果你手边有一个CSV解析器,或者你需要一个,或者你只是想确保你的转义是正确的,那么编写单元测试来解析和消除转义以及转义和格式化。

如果您可以从包含CSV特殊字符和/或SQL特殊字符的任意组合的单个记录开始,对其进行格式化,解析格式化的字符串,并以与您开始使用的记录相等的记录结束,知道你的代码是好的。

(以上所有同样适用于CSV和HTML。如果可能的话,你可以考虑使用XHTML,这样就可以使用XML验证工具和解析器,包括的NSXMLParser。)

相关问题