IOS 生成/导出EXCEL

1、文本通过制表符控制CELL保存为xls

无法满足多SHEET,CELL样式

2、JXLS 库使用  git:https://github.com/JanX2/JXLS

该库是xlslib的oc封装

测试使用iPhone、Mac打开该文件出错。但Android 、Windows正常

            JXLSWorkBook *jWorkBook = [JXLSWorkBook new];
            //DATA SHEET
            JXLSWorkSheet *sheetData = [jWorkBook workSheetWithName:KST(@"st_xlsx_data")];
            //FOOD SHEET
            JXLSWorkSheet *sheetFood = [jWorkBook workSheetWithName:KST(@"st_food")];
            //进度回调
            pro(0);
            //STYLE
            color_name_t styleBlue = 38;
            color_name_t styleGreen = 36;
            color_name_t styleYellow = 37;
            [sheetFood setCellAtRow:0 column:0 toString:KST(@"st_time") withColor:styleBlue];
            [sheetFood setCellAtRow:0 column:1 toString:KST(@"st_food_type") withColor:styleGreen];
            [jWorkBook writeToFile:filePath];

3、XlsxReaderWriter git:https://github.com/renebigot/XlsxReaderWriter

此库无法创建excel可以在项目中内置模板,使用输出后另存的方式。

另外由于他的实现方式(xml合成)只支持xlsx,也正是这个原因速度比较慢1000条数据可能要数分钟,并且在Windows上无法正常使用(可以看到SHEET但cell无数据)。Android、iPhone、Mac正常。

NSString *documentPath = [[NSBundle mainBundle] pathForResource:@"demo" ofType:@"xlsx"];
            BRAOfficeDocumentPackage *xls = [BRAOfficeDocumentPackage open:documentPath];
            //DATA
            BRAWorksheet *sheetData = [xls.workbook createWorksheetNamed:KST(@"st_xlsx_data")];
            //FOOD
            BRAWorksheet *sheetFood = [xls.workbook createWorksheetNamed:KST(@"st_food")];
            pro(0);
            [KExcel fillString:KST(@"st_time") WithBg:blue WithColor:BLACK UseSheet:sheetFood to:@"A1"];
            [KExcel fillString:KST(@"st_food_type") WithBg:GREEN WithColor:BLACK UseSheet:sheetFood to:@"B1"];

4、libxlsxwriter git:https://github.com/jmcnamara/libxlsxwriter

这个是一个c的项目,目前测试下来速度比上一个快不少。目前唯一的问题是Windows打开会警告,但数据内容正常显示。

//生成部分代码
KKExcel *jWorkBook = [KKExcel new];
            [jWorkBook newWorkBook:filePath];
            lxw_worksheet *sheetData = [jWorkBook addSheet:KST(@"st_xlsx_data")];
            //FOOD
            lxw_worksheet *sheetFood = [jWorkBook addSheet:KST(@"st_food")];
            pro(0);
            lxw_color_t styleBlue = 0x3265FE;
            lxw_color_t styleGreen = 0x1FB614;
            lxw_color_t styleYellow = 0xFBF203;
            [jWorkBook WorkSheet:sheetFood setCellAtRow:0 column:0 toString:KST(@"st_time") withColor:styleBlue];
            [jWorkBook WorkSheet:sheetFood setCellAtRow:0 column:1 toString:KST(@"st_food_type") withColor:styleGreen];
            [jWorkBook close];
//简单封装C

-(void)newWorkBook:(NSString*)str{
    _workbook  = workbook_new([str UTF8String]);
    _formatB = workbook_add_format(_workbook);
    _formatY = workbook_add_format(_workbook);
    _formatG = workbook_add_format(_workbook);
    
    lxw_color_t styleBlue = 0x3265FE;
    lxw_color_t styleGreen = 0x1FB614;
    lxw_color_t styleYellow = 0xFBF203;
    
    format_set_bg_color(_formatB, styleBlue);
    format_set_bg_color(_formatY, styleYellow);
    format_set_bg_color(_formatG, styleGreen);
}
-(lxw_worksheet*)addSheet:(NSString*)str{
    lxw_worksheet* sheet = workbook_add_worksheet(_workbook, [str UTF8String]);
    return sheet;
}

-(void)setCellStringWithOutFormat:(NSString *)str ToSheet:(lxw_worksheet*)sheet Row:(int)r Column:(int)c{
    worksheet_write_string(sheet, r, c, [str UTF8String], NULL);
}
-(void)WorkSheet:(lxw_worksheet*)sheet setCellAtRow:(int)r column:(int)c toString:(NSString *)str withColor:(lxw_color_t)color{
    if(color==0x3265FE){
        worksheet_write_string(sheet, r, c, [str UTF8String], _formatB);
    }else if(color==0x1FB614){
        worksheet_write_string(sheet, r, c, [str UTF8String], _formatY);
    }else{
        worksheet_write_string(sheet, r, c, [str UTF8String], _formatG);
    }
    
}
-(void)WorkSheet:(lxw_worksheet*)sheet setCellAtRow:(int)r column:(int)c toString:(NSString *)str{
    [self setCellStringWithOutFormat:str ToSheet:sheet Row:r Column:c];
}
-(void)close{
    workbook_close(_workbook);
}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kevin4ch

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值