2011-08-15 106 views
1

我有問題使用CHCSVwriter導出我的數組到CSV或Excel文件。CHCSVWriter Unicode問題

我有幾個ArraysPersian language(它是本地化的,至少在windows中必須是UTF-8)。

使用CHCSVWriter(thanks, Dave)我可以將我的數組導出爲CSV文件,但不能使用默認設置。

由於我的數組編碼(UTF8沒有工作,我不知道爲什麼!!)但改變CHCSVwriter.m我能夠用我的本地化語言編寫文件。

我有一個奇怪的問題:

1 - 如果我使用NSUTF8StringEncoding然後,我有一個標準的逗號分隔的CSV文件,它是能夠與Excel打開非常好,正確的列分離,但表格單元格中的未知編碼(我正在使用波斯語)

2-如果我使用NSUTF16StringEncoding那麼我有一個CSV文件,每行的整列寫入一列!但語言和編碼是正確的!奇怪的是,逗號是不可檢測的Excel,它打開一個表,只有一列,每行包含整個列,我設計用逗號分隔現有的!

此外,我有另一個問題,我沒有找到一種方法來設置CHCSVWriter的編碼,我必須從CHCSVWriter.m文件手動更改它! CHCSVWriter.m的
部分:

- (void)_writeString:(NSString *)string { 
// if (encoding == 0) { 
//  encoding = NSUTF8StringEncoding; 
     encoding = NSUTF16StringEncoding; 
//} 

和我的代碼部分:

NSString * tempFileName = [NSString stringWithFormat:@"sellExport.csv"]; 
    NSString * tempFile =[NSHomeDirectory() stringByAppendingPathComponent:tempFileName]; 

    NSLog(@"Writing to file: %@", tempFile); 

    error = nil; 
    CHCSVWriter *sellExporting = [[CHCSVWriter alloc] initWithCSVFile:tempFile atomic:NO]; 


    [sellExporting writeLine]; 
    for (int i = 0; i<=[purchaseCodes count] ; i++) { 


     [sellExporting writeLineOfFields:[purchaseCodes objectAtIndex:i],[purchaseDates objectAtIndex:i],[purchaseCarBrands objectAtIndex:i],[purchaseCarSystems objectAtIndex:i],[purchaseCarModels objectAtIndex:i],[purchaseCarColors objectAtIndex:i],[purchaseCarChassis objectAtIndex:i],[purchaseCustomerNames objectAtIndex:i],[purchaseSharedNames objectAtIndex:i],[purchaseTotals objectAtIndex:i],[sellCodes objectAtIndex:i],[sellCustomerNames objectAtIndex:i],[sellDates objectAtIndex:i],[sellTotals objectAtIndex:i],[sellProfits objectAtIndex:i],[sellShareProfits objectAtIndex:i],nil]; 
     } 
    [sellExporting closeFile]; 
    [sellExporting release]; 

回答

1

由於沒人能解決我的問題,

我發現Unicode編碼不是很順利支持Microsoft Excell(mac)。 另一方面,因爲這個事實,我使用Perisan語言爲我的數據條目,所以我必須使用NSUTF16StringEncoding(爲什麼UTF8StringEncoding沒有工作?我不知道!!),當我打開。 csv文件我的所有數據只在一列(我有16列)和Microsoft Excell無法檢測到逗號(,)作爲分隔符!!!

不管怎樣,現在,我可以打開使用NeoOffice中OpenOffice的是很好的支持Unicode的.csv檔案來沒有任何問題UTF-16編碼 CSV 文件

所以,這一切對的Microsft沒有的戴夫·德隆 CHCSVWriter。 (謝謝戴夫,再次)

這是我第五個問題,我自己解決了!

謝謝大家。