前言
在開發(fā)中乞榨,經(jīng)常會(huì)遇到將數(shù)據(jù)導(dǎo)出(Excel表格)的需求缝左;
一般情況下,都是由服務(wù)器生成Excel表格卖局,iOS通過下載表格并保存到本地的方式斧蜕;
但是我們也會(huì)遇到特殊情況,需要我們根據(jù)服務(wù)端返回的數(shù)據(jù)來生成Excel表格砚偶;
這個(gè)時(shí)候批销,就用到了本節(jié)內(nèi)容,如果生成一個(gè)Excel表格
我們使用了一個(gè)第三方庫(kù):libxlsxwriter
一染坯、導(dǎo)入第三方庫(kù)
我使用cocopods
來導(dǎo)入庫(kù)libxlsxwriter
二均芽、使用libxlsxwriter
1. 創(chuàng)建并打開一個(gè)Excel
表格對(duì)象
// excel表格文件的本地路徑
NSString *filename = [self localPath];
// 創(chuàng)建一個(gè)excel表格對(duì)象
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. 關(guān)閉Excel
對(duì)象
int resut = workbook_close(workbook);
if(resut != 0){
NSLog(@"falied");
}
在打開一個(gè)
Excel
對(duì)象后单鹿,在最后一定要調(diào)用關(guān)閉方法掀宋,關(guān)閉該對(duì)象;
3.在Excel
中創(chuàng)建一個(gè)Sheet
NSString *sheetName = @"人員";
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, sheetName.UTF8String);
4.表格中添加內(nèi)容
// 樣式對(duì)象
lxw_format *titleFormat = [self titleFormat:workbook];
// 在表格中填入字符串
// 在第0行第1列中仲锄,寫入字符串"名稱"
worksheet_write_string(worksheet, 0, 1, "名稱", titleFormat);
表格中劲妙,既可以添加字符串,也可添加數(shù)字等其他類型數(shù)據(jù)儒喊,都有其對(duì)應(yīng)的方法镣奋,例如
worksheet_write_number
5. 創(chuàng)建表格樣式
在表格中寫入內(nèi)容的時(shí)候,需要傳入表格的樣式對(duì)象
// 創(chuàng)建表格樣式
lxw_format *columnTitleformat = workbook_add_format(workbook);
// 內(nèi)容垂直居中
format_set_align(columnTitleformat, LXW_ALIGN_VERTICAL_CENTER);
// 內(nèi)容水平居中
format_set_align(columnTitleformat, LXW_ALIGN_CENTER);
// 設(shè)置字體加粗
format_set_bold(columnTitleformat);
// 設(shè)置背景顏色
format_set_bg_color(columnTitleformat, 0xCFDAF2);
// 設(shè)置邊框
format_set_border(columnTitleformat, 1);
6. 合并單元格
// 合并單元格怀愧,合并第1行第1列到第3行第3列的單元格侨颈,并寫入內(nèi)容合并
worksheet_merge_range(worksheet, 1, 1, 3, 3, [@"合并" UTF8String], titleFormat);
7. 固定某一行或某一列
// 固定單元格第一行第一列
worksheet_freeze_panes(worksheet, 1, 1);
8. 設(shè)置列寬
// 設(shè)置第0列到第5列的寬度為10
worksheet_set_column(worksheet, 0, 5, 20, NULL);