Ubuntu下C程序使用libxls-1.2.1库去读取excel表格内容

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









你可能感兴趣的:(c,struct,Excel,ubuntu,null,input)