我的部分 iOS 应用程序将包括导出 .csv 文件。
我制作了文件,并根据需要将数据添加到每一行。
我想添加一个标题行,这样如果将文件通过电子邮件发送给某人,他们就会知道每一列的用途。
我该如何实现这样的东西?
下面是我的 csv 代码:
- (NSString *)dataFilePath
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
return [documentsDirectory stringByAppendingPathComponent:@"myfile.csv"];
}
- (IBAction)save:(id)sender
{
if (![[NSFileManager defaultManager] fileExistsAtPath:[self dataFilePath]]) {
[[NSFileManager defaultManager] createFileAtPath: [self dataFilePath] contents:nil attributes:nil];
}
NSString * writeString = [NSString stringWithFormat:@"%@,%@,%@\n", self.nameTextField.text, self.cityTextField.text, self.stateTextField.text];
NSFileHandle *handle;
handle = [NSFileHandle fileHandleForWritingAtPath: [self dataFilePath]];
[handle truncateFileAtOffset:[handle seekToEndOfFile]];
[handle writeData:[writeString dataUsingEncoding:NSUTF8StringEncoding]];
self.nameTextField.text = @"";
self.cityTextField.text = @"";
self.stateTextField.text = @"";
[self.stateTextField resignFirstResponder];
}
问题 2:
如何覆盖一行?目前,如果我更新任何 UITextFields
,就会添加一个新行。
最佳答案
CSV 文件中的标题行只是第一行中的固定数据 - 由读取 CSV 文件的程序将第一行视为标题行 - Excel 在文件打开/导入中有一个选项例如,对话框。
在代码中,您可以在首次创建文件时简单地编写 header -
- (IBAction)save:(id)sender
{
NSString *headerRow;
if (![[NSFileManager defaultManager] fileExistsAtPath:[self dataFilePath]]) {
[[NSFileManager defaultManager] createFileAtPath: [self dataFilePath] contents:nil attributes:nil];
headerRow=@"name,city,state";
}
NSString * writeString = [NSString stringWithFormat:@"%@,%@,%@\n", self.nameTextField.text, self.cityTextField.text, self.stateTextField.text];
NSFileHandle *handle;
handle = [NSFileHandle fileHandleForWritingAtPath: [self dataFilePath]];
[handle truncateFileAtOffset:[handle seekToEndOfFile]];
if (headerRow != nil) {
[handle writeData:[headerRow dataUsingEncoding:NSUTF8StringEncoding]];
}
[handle writeData:[writeString dataUsingEncoding:NSUTF8StringEncoding]];
self.nameTextField.text = @"";
self.cityTextField.text = @"";
self.stateTextField.text = @"";
[self.stateTextField resignFirstResponder];
}
关于ios - 将标题添加到 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23530247/