簡體   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