直接上生成Excel代码:
- (void)createXLSFile {
// 创建存放XLS文件数据的数组
NSMutableArray *xlsDataMuArr = [[NSMutableArray alloc] init];
// 第一行内容
[xlsDataMuArr addObject:@"Time"];
[xlsDataMuArr addObject:@"Address"];
[xlsDataMuArr addObject:@"Person"];
[xlsDataMuArr addObject:@"Reason"];
[xlsDataMuArr addObject:@"Process"];
[xlsDataMuArr addObject:@"Result"];
// 100行数据
for (int i = 0; i < 100; i ++) {
[xlsDataMuArr addObject:@"2016-12-06 17:18:40"];
[xlsDataMuArr addObject:@"GuangZhou"];
[xlsDataMuArr addObject:@"Mr.Liu"];
[xlsDataMuArr addObject:@"Buy"];
[xlsDataMuArr addObject:@"TaoBao"];
[xlsDataMuArr addObject:@"Debt"];
}
// 把数组拼接成字符串,连接符是 \t(功能同键盘上的tab键)
NSString *fileContent = [xlsDataMuArr componentsJoinedByString:@"\t"];
// 字符串转换为可变字符串,方便改变某些字符
NSMutableString *muStr = [fileContent mutableCopy];
// 新建一个可变数组,存储每行最后一个\t的下标(以便改为\n)
NSMutableArray *subMuArr = [NSMutableArray array];
for (int i = 0; i < muStr.length; i ++) {
NSRange range = [muStr rangeOfString:@"\t" options:NSBackwardsSearch range:NSMakeRange(i, 1)];
if (range.length == 1) {
[subMuArr addObject:@(range.location)];
}
}
// 替换末尾\t
for (NSUInteger i = 0; i < subMuArr.count; i ++) {
#warning 下面的6是列数,根据需求修改
if ( i > 0 && (i%6 == 0) ) {
[muStr replaceCharactersInRange:NSMakeRange([[subMuArr objectAtIndex:i-1] intValue], 1) withString:@"\n"];
}
}
// 文件管理器
NSFileManager *fileManager = [[NSFileManager alloc]init];
//使用UTF16才能显示汉字;如果显示为#######是因为格子宽度不够,拉开即可
NSData *fileData = [muStr dataUsingEncoding:NSUTF16StringEncoding];
// 文件路径
NSString *path = NSHomeDirectory();
NSString *filePath = [path stringByAppendingPathComponent:@"/Documents/export.xls"];
NSLog(@"文件路径:\n%@",filePath);
// 生成xls文件
[fileManager createFileAtPath:filePath contents:fileData attributes:nil];
}
正常情况保存在沙盒中的文件是要通过电脑才能访问,但是需求是要能在手机访问,所以有了下面操作:
让你的 App 出现在 Files 里面
在你的 App 内的文件可以出现在 Files 里面之前,你必须保证你的 App 是支持 Files 中打开并且可以分享的。这需要你在你的 App 内的 Info.plist 中添加两个键值对:
第一个是 UIFileSharingEnabled,这个可以使 iTunes 分享你文件夹内的内容;
第二个是 LSSupportsOpeningDocumentsInPlace ,它保证了你文件夹内本地文件的获取权限,你需要将这两个键值对的值设置为 YES
如图:
image.png
然后你再次运行你的程序,就可以在 Files 里面 我的 iPhone 中看到以你项目名为文件夹名的文件夹(如果你在 Files 中看不到 我的 iPhone 这一项,你只需要在照片中选中一张照片共享到 Files 里面,就可以看到这一项了)
Files 里面的文件
在 Files 里面的文件夹,会将沙盒内 Documents 文件夹内的所有文件都显示出来,因此苹果建议在此文件夹中只存放用户创建的文件,如果将 App 创建的文件也放到这个目录下的话,会使这个文件夹看起来很杂乱
网友评论