美文网首页
iOS 生成Excel文件(并手机访问)

iOS 生成Excel文件(并手机访问)

作者: 月沉眠love | 来源:发表于2020-09-17 17:37 被阅读0次

    生成Excel
    iOS 打开系统文件APP,从文件中读取

    直接上生成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 创建的文件也放到这个目录下的话,会使这个文件夹看起来很杂乱

    相关文章

      网友评论

          本文标题:iOS 生成Excel文件(并手机访问)

          本文链接:https://www.haomeiwen.com/subject/zjfryktx.html