之前日志说道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;
}