将.xls / .csv文件中的数据读入iOS

时间:2014-01-24 16:06:24

标签: ios excel csv file-io

我是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行,文本和文本的混合。非整数。

当数据量达到那么大时,我应该使用哪种格式或方法吗?

4 个答案:

答案 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,当我向表中添加“,”时我遇到了问题。 我用一些技巧来解决它。 对不起,我尝试在这里添加示例代码,但时间太长了。

https://github.com/LovePick/CSVParser-Swift