【问题标题】:How to export data to a csv file with iOS?如何使用 iOS 将数据导出到 csv 文件?
【发布时间】:2009-07-21 14:32:19
【问题描述】:

我的应用程序有一个功能,可以将一些数据导出到 csv 文件,然后复制到 PC。用什么api来实现这个功能?

【问题讨论】:

    标签: ios csv


    【解决方案1】:

    你也可以这样做:

    [[array componentsJoinedByString:@","] writeToFile:@"components.csv" atomically:YES encoding:NSUTF8StringEncoding error:NULL];
    

    您可以使用这些组合来组合一个 CSV(将列名的一个数组的输出附加到值的一个数组等)。

    当然,您必须小心在已经包含逗号的值周围加上引号,然后转义值中的任何引号。

    【讨论】:

    • 如果我想将我的数据库表转换为 csv 文件应该怎么做。因此,如果用户在excel表格中打开文件,他可以以表格形式查看该项目
    【解决方案2】:

    导出到 csv 文件通常不是很困难。正确地导入它要困难得多。

    要将数据导出到 csv 文件,请执行以下操作:(伪代码)

    1) 打开文件 2) 导出列名

     int cnt=0;
     foreach(String columnname in columns)
     {
          if(cnt!=0) //write the delimiter
          {
               file.WriteText(",");  //could also be a tab delimiter
          }
          file.WriteText(columnName) //write columnname
          cnt++;
     }
    

    3) 将所有数据写入csv

     foreach(StringArray row in rows)
     {
          cnt=0;
          foreach(String fieldValue in row)
          {
               if(cnt!=0) //write the delimiter
               {
                    file.WriteText(",");  //could also be a tab delimiter
               }
               file.WriteText(fieldValue) //write fieldvalue
               cnt++;
          }
     }
    

    请注意分隔符也可能是值的一部分。如果发生这种情况,完整的字段应该用双引号括起来。

    【讨论】:

    【解决方案3】:
    NSData *data=[[arr componentsJoinedByString:@","] writeToFile:@"Bhavesh.csv" atomically:YES encoding:NSUTF8StringEncoding error:NULL];
    [mail addAttachmentData:data mimeType:@"text/csv" fileName:@"Bhavesh.csv"];
    

    【讨论】:

    • - (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:(NSError **)error 方法返回 BOOL 值而不是 NSData
    【解决方案4】:

    这是完成这项工作的完整功能(Swift 3):

        func write(theseArrays arrays: [[String]], withTheseHeaders headers: [String], toFile filename: String) {
    
        let numCollumns = arrays.count
        let numRows = arrays.first!.count
        var output = "\(headers.joined(separator: ", "))\n"
    
        for r in 0...numRows-1 {
            var row = ""
            for c in 0...numCollumns-1 {
                row = c == 0 ? arrays[c][r] : row.appending(",  \(arrays[c][r])")
            }
            output = output.appending("\(row)\n")
        }
    
        let localDocumentsURL = FileManager.default.urls(for: FileManager.SearchPathDirectory.documentDirectory, in: .userDomainMask).last
        let myLocalFile = localDocumentsURL?.appendingPathComponent(filename)
    
        guard myLocalFile != nil else {
            print("----------- Couldn't create local file!")
            return
        }
    
        do {
            try output.write(to: myLocalFile!, atomically: true, encoding: String.Encoding.utf8)
        }
        catch let error as NSError {
            print(error.localizedDescription)
            return
        }
        print("Wrote CSV to: \(myLocalFile!)")
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-09
      • 1970-01-01
      • 1970-01-01
      • 2016-04-30
      • 1970-01-01
      • 1970-01-01
      • 2017-10-16
      相关资源
      最近更新 更多