ios - 将标题添加到 CSV 文件

标签 ios objective-c csv

我的部分 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/

相关文章:

ios - 从日期字符串开始的 24 小时时间

ios - 在 iOS 中本地或远程安装 pod 时看不到额外添加的 .swift 文件,swift

ios - webVIew.request.URL 在 didFailLoadWithError : is the previous URL not the failed URL

objective-c - 如何让 NSTextView 具有不同的字体大小仅用于打印?

ios - 如何将NSDictionary数据添加到NSMutableArray?

arrays - neo4j cypher 在 csv 导入期间存储数组属性

ios - 使用 audiokit 在 AKsequencer 中创建额外 MIDI 轨道的问题

添加 subview 时 iOS 奇怪的键盘隐藏行为

PHP:使用 utf8_encode 时在 csv 中错误编码的字符

csv - 如何处理CSV文件描述中的逗号