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);
}