Ubuntu下C程序使用xlslib2.3.4去写excel表格文件


xlslib是一个跨平台的excel表格类库。也就是说可以在linux下面在C跟C++里调用它来输出excel表格文件。

先去下载源码,解压,然后编译,安装。

源码下载地址:http://sourceforge.net/projects/xlslib/files/

在终端执行命令:

./configre

make

make check

make install

其中最后 一步make install需要切换到root用户,才有权限把头文件跟库文件写入到/usr。

这一步之后,默认安装的库文件保存位置在/usr/local/lib,不在系统默认的lib路径里,需要手动把它们拷贝过去

sudo cp /usr/local/lib/libxls* /usr/lib

在写源代码的时候,一定要记得包含下面两个头文件,不然会编译出错!

#include <wchar.h>
#include <stdbool.h>

关于怎么使用的例子,2.3.4好像改动比较多,按照网上搜索到的源码大多不能使用的,,

大家可以在源码目录下面的targets/test/文件夹查看,

mainC.c是C里面调用xlslib的例子,mainCPP.CPP是C++调用xlslib的例子。

下面是一个简单的例子:wb.c

编译的时候添加xls库就可以了。

gcc wb.c -o wb -lxls

  1. #include <stdio.h>   
  2. #include <string.h>   
  3. #include <wchar.h>   
  4. #include <stdbool.h>   
  5. #include <errno.h>   
  6.   
  7. #include <xlslib/xlslib.h>   
  8.   
  9. int main (int argc, char *argv[]) {  
  10.     workbook *wb;  
  11.     worksheet* ws;  
  12.       
  13.     wb = xlsNewWorkbook();  
  14.     ws = xlsWorkbookSheet(wb, "sheet1");  
  15.       
  16.     xlsWorksheetLabel(ws, 0, 1, "name", NULL);  
  17.     xlsWorksheetLabel(ws, 0, 2, "US", NULL);  
  18.     xlsWorksheetLabel(ws, 0, 3, "CN", NULL);  
  19.     xlsWorksheetLabel(ws, 0, 4, "TR", NULL);  
  20.       
  21.     int err = xlsWorkbookDump(wb, "blank.xls");  
  22.       
  23.     xlsDeleteWorkbook(wb);  
  24.   
  25.     if (err != 0)  
  26.     {  
  27.         fprintf(stderr, "Dump xls file failed: I/O failure %d.\n", err);  
  28.         return -1;  
  29.     }  
  30.   
  31.     return 0;  
  32. }  

相关内容