前言
在开发中,经常会遇到将数据导出(Excel表格)的需求;
一般情况下,都是由服务器生成Excel表格,iOS通过下载表格并保存到本地的方式;
但是我们也会遇到特殊情况,需要我们根据服务端返回的数据来生成Excel表格;
这个时候,就用到了本节内容,如果生成一个Excel表格
我们使用了一个第三方库:libxlsxwriter
一、导入第三方库
我使用cocopods
来导入库libxlsxwriter
二、使用libxlsxwriter
1. 创建并打开一个Excel
表格对象
// excel表格文件的本地路径
NSString *filename = [self localPath];
// 创建一个excel表格对象
lxw_workbook *workbook = workbook_new([filename UTF8String]);
- (NSString *)localPath
{
NSString *documentDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *xlsxName = @"test.xlsx";
NSString *filename =[documentDirectory stringByAppendingPathComponent:xlsxName];
NSLog(@"------%@", filename);
return filename;
}
在定义的路径下,可看到生成的excel文件
2. 关闭Excel
对象
int resut = workbook_close(workbook);
if(resut != 0){
NSLog(@"falied");
}
在打开一个
Excel
对象后,在最后一定要调用关闭方法,关闭该对象;
3.在Excel
中创建一个Sheet
NSString *sheetName = @"人员";
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, sheetName.UTF8String);
4.表格中添加内容
// 样式对象
lxw_format *titleFormat = [self titleFormat:workbook];
// 在表格中填入字符串
// 在第0行第1列中,写入字符串"名称"
worksheet_write_string(worksheet, 0, 1, "名称", titleFormat);
表格中,既可以添加字符串,也可添加数字等其他类型数据,都有其对应的方法,例如
worksheet_write_number
5. 创建表格样式
在表格中写入内容的时候,需要传入表格的样式对象
// 创建表格样式
lxw_format *columnTitleformat = workbook_add_format(workbook);
// 内容垂直居中
format_set_align(columnTitleformat, LXW_ALIGN_VERTICAL_CENTER);
// 内容水平居中
format_set_align(columnTitleformat, LXW_ALIGN_CENTER);
// 设置字体加粗
format_set_bold(columnTitleformat);
// 设置背景颜色
format_set_bg_color(columnTitleformat, 0xCFDAF2);
// 设置边框
format_set_border(columnTitleformat, 1);
6. 合并单元格
// 合并单元格,合并第1行第1列到第3行第3列的单元格,并写入内容合并
worksheet_merge_range(worksheet, 1, 1, 3, 3, [@"合并" UTF8String], titleFormat);
7. 固定某一行或某一列
// 固定单元格第一行第一列
worksheet_freeze_panes(worksheet, 1, 1);
8. 设置列宽
// 设置第0列到第5列的宽度为10
worksheet_set_column(worksheet, 0, 5, 20, NULL);