我在电子邮件视图中找到了一个有效的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);
}
为什么它不按我想要的方式工作,如何将字符串分成不同的列?谢谢!
答案 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上正确显示,因为字段分隔符有一个“,”。
但我的问题已经解决了。