2009-10-03 69 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。)

相關問題