2016-01-23 72 views
0

我一直在解決這個問題幾個小時,但我仍然無法得到它的工作。我已經嘗試了所有我在stackoverflow上找到的解決方案,但沒有任何工作。下面是我的代碼:無法使用stringWithContentsOfFile從文件中獲取正確的數據

- (void)viewDidLoad { 
[super viewDidLoad]; 

// Do any additional setup after loading the view. 
NSFileManager *fileManager; 
NSString *currentPath; 
NSString *content; 
content = [[NSString alloc] init]; 

NSString *filename; 
filename = @"/Tasty Noodle House.xlsx"; 

fileManager = [NSFileManager defaultManager]; 
currentPath = [fileManager currentDirectoryPath]; 

NSError* error; 
content = [NSString stringWithContentsOfFile:[currentPath stringByAppendingString:filename] encoding:NSUTF16LittleEndianStringEncoding error:&error]; 

NSLog(@"current path: %@",currentPath); 
NSLog(@"filecontent: %@",content); 
NSLog(@"error: %@", error); 

}

我已經檢查的路徑是正確的,該文件確實存在,在這條道路(currentPath)。但是,問題是,行NSLog(@「filecontent:%@」,內容);根本不打印出來。打印輸出如下所示:

2016-01-23 11:30:11.367 ScaryBugsMac[1377:222946] current path: /Users/username/Library/Developer/Xcode/DerivedData/ScaryBugsMac-buobqwjccigdqthjejrzmgasnzyf/Build/Products/Debug 
2016-01-23 11:30:11.367 ScaryBugsMac[1377:222946] error: (null) 

根據我的經驗,它應該打印出至少「filecontent:(空)」,但它是很奇怪的沒有得到打印出來。

我也使用enconding嘗試:NSUTF8StringEncoding,它給我的錯誤:其他

2016-01-23 11:32:44.708 ScaryBugsMac[1404:230157] current path: /Users/username/Library/Developer/Xcode/DerivedData/ScaryBugsMac-buobqwjccigdqthjejrzmgasnzyf/Build/Products/Debug 
2016-01-23 11:32:44.708 ScaryBugsMac[1404:230157] filecontent: (null) 
2016-01-23 11:32:44.709 ScaryBugsMac[1404:230157] error: Error Domain=NSCocoaErrorDomain Code=261 "The file 「Tasty Noodle House.xlsx」 couldn’t be opened using text encoding Unicode (UTF-8)." UserInfo=0x60000007a740 {NSFilePath=/Users/username/Library/Developer/Xcode/DerivedData/ScaryBugsMac-buobqwjccigdqthjejrzmgasnzyf/Build/Products/Debug/Tasty Noodle House.xlsx, NSStringEncoding=4} 

兩件事情:

  1. 我已經嘗試了所有的編碼和問題下降成上述兩種情況之一。

  2. 我可以在我的Mac上使用Excel打開xlsx文件,沒有任何問題。所以我不認爲這個文件有什麼問題。

我真的很感激任何幫助,謝謝!

回答

1

更有可能的是,文件內容被壓縮(IIRC,XLSX定義允許內容被直接壓縮)。

或者在文件中有一些字符實際上導致它被認爲是損壞的。

將它加載到NSString中可能沒有那麼有用。如果它被壓縮,你需要首先解壓縮它。如果它確實是一個XLSX文件,那麼您至少需要使用XML閱讀器來讀取內容(並且更好的是,有些可能已經存在的可以讀取所述文件內容的開源庫)。

+0

謝謝!我將去查找和解析excel文件的開源工具objective-c –

0

Excel .xlsx文件包含二進制數據。 .xlsx文件與軟件包捆綁相似。

它不包含純文本,因此它不能被編碼爲NSString

+0

謝謝您的回答! –

相關問題