将csv附加到电子邮件xcode

时间:2014-07-11 08:28:11

标签: ios email export-to-csv

我在电子邮件视图中找到了一个有效的csv附件。问题是,当我在iPhone上打开csv时,它会将文件显示在单独的列中。但是,如果我在excel中打开它,那就是在一个领域。我需要两列我怎么能这样做?试图用逗号分隔字段,但这不起作用(显然)。以下几行必须是不正确的,这是我构建我的字符串以写入文件

的地方
[csv appendFormat:@"\n\"Total # of tables: %@\",Total # of objects: %d, \n \n", filteredTables,filteredTableRows]

[csv appendFormat:@"\n\"%@\",%@,", key, value];

这是我的代码(复制并且似乎是标准的)用于写入文件

BOOL res = [csv writeToFile:fileName atomically:YES encoding:NSUTF8StringEncoding error:&error];
if (!res) {
    NSLog(@"Error %@ while writing to file %@", [error localizedDescription], fileName);
}

为什么它不按我想要的方式工作,如何将字符串分成不同的列?谢谢!

2 个答案:

答案 0 :(得分:1)

对于任何有兴趣使用MessageUI.framework和MFMailComposeViewControllerDelegate创建和添加csv到电子邮件的人,以下是创建新csv的部分,将其保存到文件并将其全部附加到一个文件中。你知道吗,如果你是那种东西

NSString *emailTitle = @"My Email Title";
NSString *messageBody = @"Email Body";

MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init];
mc.mailComposeDelegate = self;
[mc setSubject:emailTitle];
[mc setMessageBody:messageBody isHTML:NO];
[mc setToRecipients:@[]];

NSMutableString *csv = [NSMutableString stringWithString:@""];

//add your content to the csv
[csv appendFormat:@"MY DATA YADA YADA"];

NSString* filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString* fileName = @"MyCSVFileName.csv";
NSString* fileAtPath = [filePath stringByAppendingPathComponent:fileName];

if (![[NSFileManager defaultManager] fileExistsAtPath:fileAtPath]) {
    [[NSFileManager defaultManager] createFileAtPath:fileAtPath contents:nil attributes:nil];
}

BOOL res = [[csv dataUsingEncoding:NSUTF8StringEncoding] writeToFile:fileAtPath atomically:NO];

if (!res) {
    [[[UIAlertView alloc] initWithTitle:@"Error Creating CSV" message:@"Check your permissions to make sure this app can create files so you may email the app data" delegate:nil cancelButtonTitle:@"Okay" otherButtonTitles: nil] show];
}else{
    NSLog(@"Data saved! File path = %@", fileName);
    [mc addAttachmentData:[NSData dataWithContentsOfFile:fileAtPath]
                     mimeType:@"text/csv"
                     fileName:@"MyCSVFileName.csv"];
    [self presentViewController:mc animated:YES completion:nil];
}

答案 1 :(得分:0)

我自己的问题的解决方案非常简单(如果有人碰巧碰到我的帖子): 我用分号代替“,”所以

[csv appendFormat:@"\n%@ ;%@,", key, value];

(不需要\“因为它已经是一个字符串)。 它现在可以与excel一起使用,但不再能在iPhone / iPad上正确显示,因为字段分隔符有一个“,”。

但我的问题已经解决了。