iOS 生成Excel文件

作者: 我唔知啊 | 来源:发表于2016-08-04 16:45 被阅读3949次

例子在这里

一、原理:

字符串插入"\t" (Tab键,制表键的简写),达到换列的作用。

二、步骤:

1、用"\t"把数据数组拼接成字符串;
2、把每行末尾的"\t"改成换行符"\n";
3、生成后缀名为xls的文件。

三、代码:

- (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];
}

四、导出结果

如果显示为#######是因为格子宽度不够,拉开格子即可

表格

相关文章

  • iOS 生成Excel文件

    例子在这里 一、原理: 字符串插入"\t" (Tab键,制表键的简写),达到换列的作用。 二、步骤: 1、用"\t...

  • django导出数据生成excel并下载到本地

    功能分析:1、生成excel文件;2、将生成的excel文件下载到本地; utils.py文件中完成excel文件...

  • Flask处理文件

    1. 生成文件 我生成的是excel文件,所以我使用openpyxl来生成excel文件 1. 安装openpyx...

  • iOS生成Excel 文件操作

    github:https://github.com/orzzh/WLCreateXLS 可以生成.xls,删除,重...

  • ios-生成Excel文件

    思路 将数据源拼成字符串,每组(行)数据用\n隔开,每组数据中每个数据之间用\t隔开,然后采用utf16的编码格式...

  • php读取excel文件数据的导入和导出

    在之前有写过一篇文章讲述了使用PHP快速生成excel表格文件并下载,这种方式生成Excel文件,生成速度很快,但...

  • iOS 生成Excel.xlsx文件

    前言 想要用iOS原生直接导出xls文件,在网上查了下资料,发现iOS原生导出Excel文件的方法,在网上基本就两...

  • PDF

    iOS生成PDF图文ios开发之--PDF文件生成 iOS11 PDFKit 使用例程

  • java excel 文件导出

    excel文件导出有两种,一种是以io流直接生成,一种是在本地生成一个excel文件(fileoutputStre...

  • FastApi下载文件

    记得之前我们讲过生成excel文件的事情,那么如何把服务器生成的excel文件正确发送给用户呢? 今天我们就来说说...

网友评论

  • wahkim:问下在手机上怎么查找到该excel
  • 0c3936aa151f:你好 知道如何生成word文档吗? 我现在要做得需求就是先生成一个空白的word,然后把自己文字写上去.
  • 834f65bae4f0:感谢楼主提供的方法,基本满足了项目的需求,但是我发现如果是用这种方式生成的Excel表格是无法用iOS的三种文件预览方法展现的,而且使用电脑上的Excel打开的话会被提示文件格式和拓展名不匹配,请问有什么办法可以解决吗?
    ca74ecf24e91:@suming1910 你说的是微软的那个库吧,免费版有行数限制的最多一百:sweat::sweat:,目前只能凑活用这个了,我对预览需求不大
    834f65bae4f0:@青树一朵朵 有一个方法,需要导入第三方依赖库,它分两种,免费版会强制把第一行的内容替换成一句英文,就是声明当前文件是使用试用版生成的,不过这种方式生成的可以直接分享到微信QQ预览,楼主的文件只能直接在Number上面打开,APP不能预览,在office上打开会有提示格式和拓展名不符
    ca74ecf24e91:找到解决办法了吗
  • 我唔係JY:楼主,你的demo只能生成xls,不能生成xlsx吗?
    0c3936aa151f:你好 知道如何生成word吗?
    我唔知啊:不能,用Excel转换格式吧。
  • b6639b5aa65c:楼主这样写的xls文件格式可能有问题,ios 用DHxlsReader读不出来,普通的xls,是可以读出来的
    我唔知啊:这里生成的xls文件确实是不规范的,只是提供一种方法。
  • 菜鸟coder:楼主 生成的文件为什么不能在QQ或者微信预览 显示ERROR_MESSAGE_MAIN ERROR_MESSAGE_READON
    我唔知啊:@菜鸟coder 似乎是系统的限制,我也不太明白,帮不了你。
    菜鸟coder:@我唔知啊 是的 能在pc端查看 但是移动端预览不了
    我唔知啊:你是用iPhone 7 真机测试?
  • 海鲜味龙潭方便面:楼主 我想再一个表格里生成两个表怎么办啊?
    我唔知啊:@海鲜味龙潭方便面 添加一个sheet是吗?这个我就不清楚啦:flushed:
    海鲜味龙潭方便面:@我唔知啊 。。。。。。不是再一张表里,就是一个大的Excel表里不是能包含很多小的表吗。就相当于再Excel在左下角那再添加一个表
    我唔知啊:@海鲜味龙潭方便面 把数据隔开:sweat:
  • 开小飞:楼主,我有个小问题,创建了这个xls文件之后,怎么将他导出呢?(正式上架版本)
    比如AirDrop?
    34bb2a6201da:@我唔知啊 请问怎么传送到WPS 或者QQ啊
    我唔知啊:可以传送到QQ或WPS等软件。
  • 3cd50720ca18: 问个问题,为什么第一列里面数据写不进去
    3cd50720ca18:@我唔知啊 先赞一个👍👍
    我唔知啊:@skye11 已经解决第一列为空问题。
  • 请叫我旺仔:可以把文件中的tableview的数据整个导出去吗
    我唔知啊:@一万个舍不得 只要能添加到数组就可以。
  • 388e6fc164de:佩服佩服!
    我唔知啊:@songleileilei 多谢多谢 :relaxed:

本文标题:iOS 生成Excel文件

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