之前日志说道xlslib库只能写excel表格,但是不能读,但是读又是经常需要的一个操作,,,
所以有了今天的libxls,这个就是专门用来读excel表格的。
源码可以在这里下载:http://sourceforge.net/projects/libxls/
下载解压然后编译安装
./configre
make
sudo make install
由于头文件跟库文件的目录放的位置不对,所以需要手动把它们拷贝到系统路径下面去
sudo cp -r -v /usr/local/libxls/include/libxls/ /usr/include
sudo cp -r -v /usr/local/libxls/lib/ /usr
使用方法:
包括头文件:#include <libxls/xls.h>
使用到的相关函数跟类型:
xlsWorkBook *pWb;
xlsWorkSheet *pWs;
struct st_row_data *row;
打开一个excel表格
pWb = xls_open(argv[1], "UTF-8");
读取表格的第1页
pWs = xls_getWorkSheet(pWb, 0);
xls_parseWorkSheet(pWs);
获取一行(r)的内容
row = &pWs->rows.row[r];
得到某一列的文本
row->cells.cell[3].str
关闭
xls_close_WS(pWs);
xls_close_WB(pWb);
编译命令:gcc -o readXls readXls.c -lxlsreader
一个简单的例子readXls.c:
#include <stdio.h> #include <stdlib.h> #include <libxls/xls.h> #include <unistd.h> ///////////////////////////////////////////////// void strrpl(char *result, char *str, char *old_str, char *new_str); ///////////////////////////////////////////////// int main(int argc, char **argv) { xlsWorkBook *pWb; xlsWorkSheet *pWs; struct st_row_data *row; int r,c; char buf[512], result[512]; if (argc < 2) { sprintf(stderr, "please input the xml file."); return EXIT_FAILURE; } // open workbook, choose standard coversion pWb = xls_open(argv[1], "UTF-8"); if (NULL == pWb) { fprintf(stderr, "File not found!\n"); return EXIT_FAILURE; } // open and parse the first sheet pWs = xls_getWorkSheet(pWb, 0); xls_parseWorkSheet(pWs); // process all rows of the first sheet for (r=0; r<=pWs->rows.lastrow; r++) { row = &pWs->rows.row[r]; for (c=0; c<=pWs->rows.lastcol; c++) { if (row->cells.cell[c].str != NULL) { printf("%\t", row->cells.cell[c].str); } } printf("\n"); } // close workSheet xls_close_WS(pWs); // close workbook xls_close_WB(pWb); return 0; }