从.xls / .csv文件读取数据到iOS

我是iOS的新手,并试图将电子表格的内容读入iOS数组中。 我使用的电子表格是第一列的简单3×2数字数组,第二列是文本。 我已经尝试阅读与&没有列标题,在.xls,.xlsx,。 cdv,.txt(unicode和分隔),但没有成功。 该文件被称为“资金”,我使用的代码是:

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]; 

它find文件的目录,但放弃在[NSFileHandle fileHandleForReadingAtPath:fileDir]

我该怎么做? 我需要帮助确认什么文件types我应该使用作为源,以及如何读取到一个数组。

当这个问题解决后,我可能需要读取大量的数据,多列,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]; 

然后继续将string拆分成行,并处理每一行。

对于大文件,最好看看一些更复杂的技术,如在Objective-C中:逐行读取文件 。

至于parsingCSV行,使用NSString方法componentsSeparatedByString标记每行,如下所示:

 NSArray *fields = [line componentsSeparatedByString:@","]; 

实际上,这也是你用来将你阅读的文件内容分割成单行的方法。 只要注意换行(CR LF或LF)。 你会发现如何用新行分割string 。

有一个非常stream行的CocoaPod / Github项目,它们都会编写和parsingCSV文件。 https://github.com/davedelong/CHCSVParser

你可以在这里find:我在哪里可以find一个CSV到Objective-C的NSArrayparsing器? 很类似的问题,顺便说一句。 将CSV转换为JSON应该可以帮助您parsing数据,因为JSON可以很容易地转换为NSDictionary或NSArray。

我使用Numbers创buildcsv,当我向表中添加“,”时遇到问题。 我用一些技巧来解决它。 对不起,我尝试在这里添加示例代码,但太长了。

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

有一个库来处理iOS中的Xlsx文件。 它的Objective-C编写,但你也可以使用桥接头使用Swift。 GitHub上的XlxsReaderWriter您可以使用读取Xlsx文件

 let spreadsheet: BRAOfficeDocumentPackage = BRAOfficeDocumentPackage.open(outPath.path) let workSheet : BRAWorksheet=spreadsheet.workbook.worksheets?[0] as! BRAWorksheet; 

我认为这可能会帮助像我这样的人,寻找阅读xlsx文件。