項目中可能會遇到數據庫中導出CSV格式數據,類似於如下圖:
需要將csv數據導入進程序中使用,或者寫入本地數據庫文件中.
*什麼是CSV?
CSV,即逗號分隔值(Comma-Separated Values)。有時也稱為字符分隔值,因為分隔字符也可以不是逗號,可以是分號;),其文件以純文本形式存儲表格數據(數字和文本)。
這種文件格式經常用來作為不同程序之間的數據交互的格式。
CSV格式數據的結構類似表格,不同的記錄占用一行,一行中的字段用“,”(逗號)分隔。
在xcode中, csv格式的文件是一種占內存很小的文本文檔,它的特點:
(1)開頭是不留空 ,以行為單位。
(2)每條記錄占一行,以逗號為分隔符。列為空也要表達其存在。
(3)可含或不含列名,如果含列名則居文件第一行。
(4)一行數據不跨行,無空行。
(5)字段中包含有逗號符,該字段必須用雙引號括起來。
(6)字段中包含有換行符,該字段必須用雙引號括起來。
(7)字段前後包含有空格,該字段必須用雙引號括起來。( a b c ==> "a b c")
(8)字段中的雙引號,用兩個雙引號表示。( 我說:"abc"。 ==> 我說:""abc""。 )
(9)字段中如果有雙引號,該字段必須用雙引號括起來。( 我說:"abc"。 ==> "我說:""abc""。"
簡單了解CSV文件之後程序員要做的當然就是解析csv到內存中:
在iOS中,可以利用以下類進行解析,將其解析成為NSArray數組:
+(NSArray *)readCSVData{
NSMutableArray *_InfoArray;
if (_InfoArray) {
return NULL;
}
_InfoArray=[[NSMutableArray alloc]init];
NSString *filepath=[[NSBundle mainBundle] pathForResource:@"員工表" ofType:@"csv"];
FILE *fp=fopen([filepath UTF8String], "r");
if (fp) {
char buf[BUFSIZ];
fgets(buf, BUFSIZ, fp);
while (!feof(fp)) {
char buf[BUFSIZ];
fgets(buf, BUFSIZ, fp);
// 處理文本信息 轉化 成 數組文件
NSString *s=[[NSString alloc]initWithUTF8String:(const char *)buf];
NSString *ss=[s stringByReplacingOccurrencesOfString:@"\r" withString:@""];
ss=[ss stringByReplacingOccurrencesOfString:@"\n" withString:@""];
NSArray *a=[ss componentsSeparatedByString:@","];
[_InfoArray addObject:a];
}
}
NSLog(@"%@",_InfoArray);
return _InfoArray;
}
打印輸出的信息就是程序員需要的數據!