简体   繁体   中英

Data in csv file after export

I have a problem with data who are exported to a csv file. It concerns the data with accented characters. Type Data is string. in my file i have this :

Téléphones et internet;    Abonnement iPad;    13,90 €;     Débit

I would like to have :

Téléphones et internet;  Abonnement iPad;    13,90€  Débit

what code should be used to do this? Thank you.

EDIT : my code

NSMutableString *writeString = [NSMutableString string];

        for (id object in [[self fetchedResultsController] fetchedObjects]) {

            NSString * object1 = [[object valueForKey:@"object1Data"] description];
            NSString * object2 = [[object valueForKey:@"object2Data"] description];
            NSString * object3 = [[object valueForKey:@"object3Data"] description];
            NSString * object4 = [[object valueForKey:@"object4Data"] description];;

            [writeString appendString:[NSString stringWithFormat:@"%@; %@; %@; %@\n",    object1, object2, object3, object4]];
        }

NSArray  *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString* savePath = [paths objectAtIndex:0];
        savePath = [savePath stringByAppendingPathComponent:@"objectData.csv"];
        [writeString writeToFile:savePath atomically:YES encoding:NSUTF8StringEncoding  error:NULL];

EDIT2 : for viewing i use his :

        QLPreviewController *previewController=[[QLPreviewController alloc]init];
        previewController.delegate=self;
        previewController.dataSource=self;
        [self presentViewController:previewController animated:YES completion:nil];
        [previewController.navigationItem setRightBarButtonItem:nil];

- (id <QLPreviewItem>)previewController:(QLPreviewController *)controller  previewItemAtIndex:(NSInteger)index
{
    NSArray  *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,   NSUserDomainMask, YES);
    NSString* savePath = [paths objectAtIndex:0];
    savePath = [savePath stringByAppendingPathComponent:@"objectData.csv"];

    return [NSURL fileURLWithPath:savePath];

}

- (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller
{
   return 1;
}

Your output looks like it might be correct, the problem seems like it's in how you are viewing it.

Are you importing it into Excel or something? Excel's CSV import is very poor in my experience, and it won't auto-detect incoming UTF-8 data.

It's likely the encoding that's causing an issue here.

As a side note it's a CSV = Comma Separated Values. You aren't putting the commas in .. ?

Change:

[writeString appendString:[NSString stringWithFormat:@"%@; %@; %@; %@\n",    object1, object2, object3, object4]];

To:

[writeString appendString:[NSString stringWithFormat:@"%@;, %@;, %@;, %@\n",    object1, object2, object3, object4]];

This will make the values appear in separate columns when opened in excel, unless you want it all in 1 column ... ?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM