[英]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.