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;
}









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值