繁体   English   中英

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM