使用cocoapods
导入libxlsxwriter
,导入头文件:
pod libxlsxwriter
生成xlsx
创建表格workbook
,和工作表worksheet
:
lxw_workbook *workbook = workbook_new([path UTF8String]);// 创建新xlsx文件,路径需要转成c字符串
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);// 创建sheet
保存生成文件:
workbook_close(workbook);
设置列宽:
// 设置列宽
/* 五个参数分别是:
worksheet Pointer to a lxw_worksheet instance to be updated.
first_col The zero indexed first column.
last_col The zero indexed last column.
width The width of the column(s).
format A pointer to a Format instance or NULL.
从第first_col到last_col的列的宽度为width,索引从0开始 */
worksheet_set_column(worksheet, 0, 2, 20, NULL);
worksheet_set_column(worksheet, COLS("Name:Type"), 5, NULL);
单元格属性设置:
设置单元格格式使用lxw_format
,可以设置字体、颜色、对齐方式、边框等等所有属性。具体属性可阅读参考格式文档。
- 新建单元格格式对象:
lxw_format *format = workbook_add_format(workbook);
- 字体设置:
format_set_bold(format);// 加粗
format_set_font_color(format, LXW_COLOR_RED);//颜色
- 设置对齐方式,所有对齐参数设置参阅:format_set_align
format_set_align(format, LXW_ALIGN_CENTER);// 水平居中
format_set_align(format, LXW_ALIGN_VERTICAL_CENTER);//垂直居中
- 设置边框,所有边框设置参阅:format_set_border
format_set_border(format, LXW_BORDER_MEDIUM);// 边框(四周):中宽边框
format_set_right(format, LXW_BORDER_DOUBLE);// 右边框:双线边框
- 设置数字格式,所有数字格式设置参阅:format_set_num_format
format_set_num_format(format, "¥#,##0.00");
单元格写入数据:
/*第一个参数是工作表
第二个参数是行数(索引从0开始)
第三个参数是列数(索引从0开始)
第四个参数是写入的内容
第五个参数是单元格样式,可为NULL。*/
// 写入文字
worksheet_write_string(worksheet, 1, 0, "Hello", format);
worksheet_write_string(worksheet, 1, 1, "World", NULL);
// 写入数字
worksheet_write_number(worksheet, 2, 0, 123.456, format);
worksheet_write_number(worksheet, 3, 0, 123.456, NULL);
- 数学公式,具体使用参阅:worksheet_write_formula 在(4,0)位置即A5上输出A3和A4的和:
worksheet_write_formula(worksheet, 4, 0, "=SUM(A3:A4)", format);
- 标题栏固定
worksheet_freeze_panes(worksheet, 1, 2);// 标题栏:前1行、前2列固定
完整代码:
lxw_workbook *workbook = workbook_new([path UTF8String]);// 创建新xlsx文件,路径需要转成c字符串
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);// 创建sheet
// 添加格式
lxw_format *format = workbook_add_format(workbook);
//设置格式
format_set_bold(format);
format_set_font_color(format, LXW_COLOR_RED);
format_set_align(format, LXW_ALIGN_CENTER);// 水平居中
format_set_align(format, LXW_ALIGN_VERTICAL_CENTER);//垂直居中
format_set_border(format, LXW_BORDER_MEDIUM);// 边框(四周):中宽边框
format_set_right(format, LXW_BORDER_DOUBLE);// 右边框:双线边框
format_set_num_format(format, "¥#,##0.00");
// 设置列宽
/* 五个参数分别是:
worksheet Pointer to a lxw_worksheet instance to be updated.
first_col The zero indexed first column.
last_col The zero indexed last column.
width The width of the column(s).
format A pointer to a Format instance or NULL.
从第first_col到last_col的列的宽度为width,索引从0开始 */
worksheet_set_column(worksheet, 0, 2, 20, NULL);
worksheet_set_column(worksheet, 3, 4, 30, format);
//写入数据
/*第一个参数是工作表
第二个参数是行数(索引从0开始)
第三个参数是列数(索引从0开始)
第四个参数是写入的内容
第五个参数是单元格样式,可为NULL。*/
worksheet_write_string(worksheet, 0, 0, "Name", NULL);
worksheet_write_string(worksheet, 0, 1, "Type", NULL);
worksheet_write_string(worksheet, 0, 2, "City", NULL);
worksheet_write_string(worksheet, 0, 3, "Address", NULL);
worksheet_write_string(worksheet, 0, 4, "Mobile", NULL);
for (int i = 0; i < models.count; i ++) {
PoiResultModel *model = models[i];
worksheet_write_string(worksheet, i+1, 0, model.name.UTF8String, NULL);
worksheet_write_string(worksheet, i+1, 1, model.type.UTF8String, NULL);
worksheet_write_string(worksheet, i+1, 2, model.city.UTF8String, NULL);
worksheet_write_string(worksheet, i+1, 3, model.address.UTF8String, NULL);
worksheet_write_string(worksheet, i+1, 4, model.tel.UTF8String, NULL);
}
//关闭,保存文件
workbook_close(workbook);