[英]Reading data from .xls/.csv files into iOS
我是iOS的新手,我正在嘗試將電子表格的內容讀入iOS數組。 我正在使用的電子表格是第一列的簡單3 x 2數字數組和第二列的文本數字。 我試過用.xls,.xlsx中的有和沒有列標題的內容閱讀它。 cdv,.txt(unicode和delimited)但沒有成功。 該文件稱為“資金”,我正在使用的代碼是:
NSData *databuffer;
NSFileHandle * file;
NSString *docDir = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES)[0];
NSString *fileDir = [docDir stringByAppendingPathComponent:@"funds.xls"];
file = [NSFileHandle fileHandleForReadingAtPath:fileDir];
if (file == nil) NSLog (@"Failed to open file");
[file seekTOOffset: 10];
databuffer = [file readDataOfLength: 5];
[file closeFile];
它找到文件的目錄,但放棄[NSFileHandle fileHandleForReadingAtPath:fileDir]
。
我該怎么辦? 我需要幫助確認我應該使用哪種文件類型作為源,以及如何將其讀入數組。
當這個問題得到解決后,我可能需要讀取大量數據,多列,4k行,文本和非整數的混合。
當數據量達到那么大時,我應該使用哪種格式或方法嗎?
請務必以CSV格式從Excel導出數據。
使用NSFileManager訪問文件很容易:
NSString *pathName = ...; /// fill in the file's pathname
NSFileManager *fm = [NSFileManager defaultManager];
if ([fm fileExistsAtPath:pathName]) {
// read the file contents, see below
}
對於小文件,您可以說:
NSString *lines = [NSString stringWithContentsOfFile:filePath];
然后繼續將字符串拆分為行,並處理每一行。
對於大型文件,最好看看一些更復雜的技術,比如在Objective-C中:逐行讀取文件 。
至於解析CSV行,使用NSString
方法componentsSeparatedByString
來標記每一行,如:
NSArray *fields = [line componentsSeparatedByString:@","];
實際上,這也是您用來將讀取的文件內容拆分為單獨行的方法。 只需注意換行(CR LF或LF)。 您將找到有關如何使用換行符拆分字符串的內容 。
有一個非常流行的CocoaPod / Github項目,它們都將編寫和解析CSV文件。 https://github.com/davedelong/CHCSVParser
您可以在這里找到:在哪里可以找到針對Objective-C的NSArray解析器的CSV? 非常相似的問題,順便說一句。 將CSV轉換為JSON應該可以幫助您解析數據,因為JSON可以很容易地轉換為NSDictionary或NSArray。
我使用Numbers創建csv,當我向表中添加“,”時我遇到了問題。 我用一些技巧來解決它。 對不起,我嘗試在這里添加示例代碼,但時間太長了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.