我是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行,文本和文本的混合。非整数。
当数据量达到那么大时,我应该使用哪种格式或方法吗?
答案 0 :(得分:7)
请务必在CSV format。
中导出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: Reading a file line by line。
至于解析CSV行,请使用NSString
方法componentsSeparatedByString
对每行进行标记,例如:
NSArray *fields = [line componentsSeparatedByString:@","];
实际上,这也是您用来将读取的文件内容拆分为单独行的方法。只需注意换行(CR LF或LF)。你会在how to split a string with newlines找到一些东西。
答案 1 :(得分:3)
有一个非常流行的CocoaPod / Github项目,它们都会编写和解析CSV文件。 https://github.com/davedelong/CHCSVParser
答案 2 :(得分:0)
你可以找到here: Where can I find a CSV to NSArray parser for Objective-C?非常相似的问题,顺便说一下。将CSV转换为JSON应该可以帮助您解析数据,因为JSON可以很容易地转换为NSDictionary或NSArray。
答案 3 :(得分:-1)
我使用Numbers创建csv,当我向表中添加“,”时我遇到了问题。 我用一些技巧来解决它。 对不起,我尝试在这里添加示例代码,但时间太长了。