Ứng dụng của tôi có chức năng có thể xuất một số dữ liệu sang tệp csv, rồi sao chép sang PC. Tôi không chắc chắn những gì api sử dụng để thực hiện chức năng này. Có ai biết về việc này không? Cảm ơn trước.Làm cách nào để xuất dữ liệu sang tệp csv bằng iPhone SDK 3.0?
Trả lời
Xuất sang tệp csv thường không quá khó. Nhập khẩu nó là phức tạp hơn nhiều để làm một cách chính xác.
để xuất dữ liệu vào một tập tin csv làm như sau: (giả)
1) mở tập tin 2) tên cột xuất khẩu
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) viết tất cả các dữ liệu vào 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++;
}
}
hãy cẩn thận với thực tế là dấu phân cách cũng có thể là một phần của giá trị. Nếu điều này xảy ra, trường hoàn chỉnh phải được đặt trong dấu ngoặc kép.
Bạn cũng có thể làm điều gì đó như:
[[array componentsJoinedByString:@","] writeToFile:@"components.csv" atomically:YES encoding:NSUTF8StringEncoding error:NULL];
Bạn có thể sử dụng kết hợp này để đặt lại với nhau một CSV (thêm đầu ra của một mảng cho các tên cột để một mảng cho các giá trị, vv).
Tất nhiên, bạn phải cẩn thận để đặt dấu ngoặc kép xung quanh các giá trị đã chứa dấu phẩy và sau đó thoát khỏi bất kỳ dấu ngoặc kép nào trong giá trị.
Tôi nên làm gì nếu tôi muốn chuyển bảng cơ sở dữ liệu thành tệp csv. Vì vậy, nếu người dùng mở tệp trong bảng excel, anh ta có thể xem mục trong biểu mẫu bảng – Warrior
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 *) đường dẫn nguyên tử: (BOOL) useAuxiliaryFile encoding: (NSStringEncoding) enc error: (NSError * *) phương thức error' trả về giá trị 'BOOL' không phải' NSData'. – TheTiger
Đây là một chức năng đầy đủ mà không được công việc (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!)")
}
Có một cách tuyệt vời để thoát khỏi nhân vật delimiter tại repo này: http://bitbucket.org/fourplusone/fourcsv –