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