zoukankan      html  css  js  c++  java
  • 在工程里生成一个excel表格或者word文件

    http://aobdo.com/2015/08/27/导出tableView数据至excel/?plg_nld=1&plg_uin=1&plg_auth=1&plg_nld=1&plg_usr=1&plg_vkey=1&plg_dev=1

    1.现在开始进入正题,要先下载微软的excel库文件http://www.libxl.com/download.html,解压

    2.里面有example,可以参考一下、把LibXL.framework导入自己的项目当中,设置bitcode为no,以及linker也要改为-lstdc++

    3.上代码,导入头文件,设置代理

    1
    #include "LibXL/libxl.h"
    1
    @interface JGdetailController ()<UITableViewDataSource,UITableViewDelegate,JGPeopleViewDelegate,UIDocumentInteractionControllerDelegate>
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    -(void)clickBarButton{  
        NSLog(@"createExcel");  

        BookHandle book = xlCreateBook(); // use xlCreateXMLBook() for working with xlsx files  

        SheetHandle sheet = xlBookAddSheet(book, "Sheet1", NULL);  
        //第一个参数代表插入哪个表,第二个是第几行(默认从0开始),第三个是第几列(默认从0开始)  
        xlSheetWriteStr(sheet, 1, 0, "姓名", 0);  
        xlSheetWriteStr(sheet, 1, 1, "性别", 0);  
        xlSheetWriteStr(sheet, 1, 2, "学校", 0);  
        xlSheetWriteStr(sheet, 1, 3, "电话", 0);  


        for (int i = 0; i < self.nameArray.count; i++) {  
            const charchar *name_c = [self.nameArray[i] cStringUsingEncoding:NSUTF8StringEncoding];  //这里是将NSString字符串转为C语言字符串  
            xlSheetWriteStr(sheet, i+2, 0,name_c, 0);  

        }  
        for (int i = 0; i < self.sexArray.count; i++) {  
            const charchar *sex_c = [self.sexArray[i] cStringUsingEncoding:NSUTF8StringEncoding];  
            xlSheetWriteStr(sheet, i+2, 1,sex_c, 0);  

        }  
        for (int i = 0; i < self.schoolArray.count; i++) {  
            const charchar *school_c = [self.schoolArray[i] cStringUsingEncoding:NSUTF8StringEncoding];  
            xlSheetWriteStr(sheet, i+2, 2,school_c, 0);  

        }  
        for (int i = 0; i < self.phoneArray.count; i++) {  
            const charchar *phone_c = [self.phoneArray[i] cStringUsingEncoding:NSUTF8StringEncoding];  
            xlSheetWriteStr(sheet, i+2, 3,phone_c, 0);  

        }  


        NSString *documentPath =  
        [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES) objectAtIndex:0];  
        NSString *filename = [documentPath stringByAppendingPathComponent:@"out.xls"];  
        NSLog(@"filepath--%@",filename);  

        xlBookSave(book, [filename UTF8String]);  

        xlBookRelease(book);  

        //导出xls文件  
        UIDocumentInteractionController *docu = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:filename]];  

        docu.delegate = self;  
        CGRect rect = CGRectMake(0, 0, 320, 300);  //这里感觉没什么用  

        [docu presentOpenInMenuFromRect:rect inView:self.view animated:YES];  //不写可以直接预览  

        [docu presentPreviewAnimated:YES];  //这句比较坑爹。如果不写这句,只写上面那句会弹出选择支持xls文件的APP。  

    }
    1
    2
    3
    4
    5
    6
    //doucumentDelegate方法(必须实现,还有几个展示选择系统自带print还是啥的就不说了,可以自己研究下)  
    - ( UIViewController *)documentInteractionControllerViewControllerForPreview:( UIDocumentInteractionController *)interactionController{  

        return self;  

    }
    4.把模型tableView里面的数据取出来放在数组里:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    self.nameArray = [NSMutableArray array];
    self.sexArray = [NSMutableArray array];
    self.schoolArray = [NSMutableArray array];
    self.phoneArray = [NSMutableArray array];
    for (JGdetail *de in self.people) {
        [self.nameArray addObject:de.name];
        if(de.sex == 0){
            [self.sexArray addObject:@"男"];
        }else if(de.sex == 1){
            [self.sexArray addObject:@"女"];
        }
         [self.schoolArray addObject:de.school];
         [self.phoneArray addObject:de.tel];
    }
    NSLog(@"nameArray---%@",self.sexArray);
    5.这样就可以选择QQ打开生成的xls文件。效果如下,因为这个是要收费的,所以忽略第一行:

  • 相关阅读:
    Java基础五
    Java基础测试
    Java练习题
    Java基础四
    Java基础三
    Java基础二
    Java基础一
    大数据讲解
    python笔记之函数 二
    iOS UICollectionView的使用(用storyboard和xib创建)
  • 原文地址:https://www.cnblogs.com/shiguangji728/p/5578457.html
Copyright © 2011-2022 走看看