1. 程式人生 > >iOS-解析讀取CSV檔案,解析excel檔案

iOS-解析讀取CSV檔案,解析excel檔案

專案中可能會遇到資料庫中匯出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; }

列印輸出的資訊就是程式設計師需要的資料!