libxls的使用

1.下载libxls源码包:http://sourceforge.net/projects/libxls/

2.安装

(1)./configre

(2)make

(3) make install

(4)由于头文件跟库文件的目录放的位置不对,所以需要手动把它们拷贝到系统路径下面去

cp -r -v /usr/local/libxls/include/libxls/ /usr/include
cp -r -v /usr/local/libxls/lib/ /usr

cp -r -v /usr/local/libxls/include/xls.h /usr/include

一个简单的例子:read_xls.c

#include <stdio.h>
#include <stdlib.h>
#include <xls.h>
#include <unistd.h>
#include <string.h>
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) {
    fprintf(stderr, "please input the xml file.");
    return EXIT_FAILURE;
  }

  pWb = xls_open(argv[1], "UTF-8");
  if (NULL == pWb) {
    fprintf(stderr, "File not found!\n");
    return EXIT_FAILURE;
  }

  pWs = xls_getWorkSheet(pWb, 0); 
  xls_parseWorkSheet(pWs);

  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("%s\t",
            row->cells.cell[c].str);
      }   
    }   
    printf("\n");
  }

  xls_close_WS(pWs);

  xls_close_WB(pWb);

  return 0;
}

(5)编译运行

gcc -lxlsreader read_xls.c -o read_xls

但是在运行的时候会报错:

error while loading shared libraries: libxlsreader.so.1: cannot open shared
出现这类错误表示,系统不知道xxx.so放在哪个目录下,这时候就要在/etc/ld.so.conf中加入xxx.so所在的目录。

一般而言,有很多的so会存放在/usr/local/lib这个目录底下,去这个目录底下找,果然发现自己所需要的.so文件。

所以,在/etc/ld.so.conf中加入/usr/local/libxsl/lib这一行,保存之后,再运行:/sbin/ldconfig –v更新一下配置即可。

或者在/etc/ld.so.conf.d/下新建一个.conf文件,并在其中加入目标路径就可以了,在运行/sbin/ldconfig

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
libxls库可以读取和写入Excel文件。下面分别介绍如何使用libxls库进行读写操作。 读取Excel文件: ```c #include <stdio.h> #include <stdlib.h> #include "libxls/xls.h" int main(int argc, char *argv[]) { xlsWorkBook *pWB; xlsWorkSheet *pWS; xlsCell *pCell; int i, j; pWB = xls_open("test.xls", "UTF-8"); pWS = xls_getWorkSheet(pWB, 0); for (i = 0; i <= pWS->rows.lastrow; i++) { for (j = 0; j <= pWS->rows.lastcol; j++) { pCell = xls_cell(pWS, i, j); if (pCell != NULL) { if (pCell->id == XLS_RECORD_RK || pCell->id == XLS_RECORD_MULRK) { printf("%g\t", xlsConvertRKtoNumber(pCell->d, pWB->is5ver)); } else if (pCell->id == XLS_RECORD_BLANK) { printf("\t"); } else { printf("%s\t", xls_getCellValue(pCell, pWB)); } } else { printf("\t"); } } printf("\n"); } xls_close(pWB); return 0; } ``` 这个示例代码打开名为test.xls的Excel文件,并读取其中第一个工作表的所有单元格数据。在读取单元格数据时,根据单元格类型进行不同的处理,如果是数值类型则调用xlsConvertRKtoNumber函数将RK值转换成具体数值,如果是空单元格则输出一个制表符,否则调用xls_getCellValue函数获取单元格的字符串值。最后关闭工作簿。 写入Excel文件: ```c #include <stdio.h> #include <stdlib.h> #include "libxls/xls.h" int main(int argc, char *argv[]) { xlsWorkBook *pWB; xlsWorkSheet *pWS; int i, j; pWB = xlsNewWorkbook(); pWS = xlsAddWorksheet(pWB, "Sheet1"); for (i = 0; i < 10; i++) { for (j = 0; j < 5; j++) { xlsWriteNumber(pWS, i, j, i*j); } } xlsSave(pWB, "test.xls"); xlsDeleteWorkbook(pWB); return 0; } ``` 这个示例代码创建了一个新的xls工作簿,并在第一个工作表上写入了一些数字数据,最后将工作簿保存到名为test.xls的文件中。要使用该示例,需要先下载和安装libxls库,并在编译时包含相关的头文件和库文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值