libxls 与 xlslib的结合

本文介绍如何利用LibXLS库实现Excel文件的操作,包括读取内容、行列互换及输出新文件的过程。文中提供了从下载源码、编译安装到实际使用的详细步骤,并附带了一个完整的C语言示例程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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


程序读xls中的内容并且 行列掉换 输出xls文件。


 gcc a.c -o a.out -I /usr/include/libxls/ -L /usr/lib/libxls  -lxlsreader -I /usr/include/xlslib/ -L /usr/lib/ -lxls./a.out test2.xls hello.xls 


#include <stdio.h>
#include <stdlib.h>

#include <ctype.h>

#include <libxls/xls.h>

#include <stdio.h>
#include <stdint.h>
#include <string.h>

#include <xlslib/xlslib.h>

int
main (int argc, char *argv[])
{

  xlsWorkBook *pWB;
  xlsWorkSheet *pWS;
  FILE *f;
  int i;
  int j;

  workbook *w;
  worksheet *ws;
  int ret;
 
  char tmp[255];
  char temp[32];
  char sheetname[32] ;
  w = newWorkbook ();

  if (argc > 3 || argc < 3)    //判断输入输出参数是否正确
    {
      printf ("error argc! ");
      exit (1);
    }

  struct st_row_data *row;
  WORD t, tt;
  pWB = xls_open (argv[1], "ASCII");    // "KOI8-R"打开要转换的xls文件
  if (pWB != NULL)
    {


      for (i = 0; i < pWB->sheets.count; i++)    //统计有多少sheet并处理每个sheet中的数据
//    printf ("Sheet N%i (%s) pos %i\n", i, pWB->sheets.sheet[i].name,
//        pWB->sheets.sheet[i].filepos);
{    strcpy(sheetname,pWB->sheets.sheet[i].name);
    


      ws = callWorkbookSheet (w, sheetname);    //打开要写入的sheet
      bzero (sheetname, 32);

    //for(j=0;j<=i;j++)
      pWS = xls_getWorkSheet (pWB, i);
      xls_parseWorkSheet (pWS);

      for (t = 0; t <= pWS->rows.lastrow; t++)    //对xls行处理
    {
      row = &pWS->rows.row[t];

      for (tt = 0; tt <= pWS->rows.lastcol; tt++)    //列处理
        {
          if (!row->cells.cell[tt].ishiden)
        {

          //if (row->cells.cell[tt].colspan)
          //  fprintf (ws, " colspan=%i", row->cells.cell[tt].colspan);
          //strcpy(tmp , row->cells.cell[tt].colspan);

          //if (row->cells.cell[tt].rowspan)
          //  fprintf (ws, " rowspan=%i", row->cells.cell[tt].rowspan);
          //strcpy(tmp , row->cells.cell[tt].rowspan);

          if (row->cells.cell[tt].str != NULL
              && row->cells.cell[tt].str[0] != '\0')
            //  fprintf (ws, "%s", row->cells.cell[tt].str);

            //memset(tmp,0,255);
            strcpy (tmp, row->cells.cell[tt].str);
          callWorksheetLabel (ws, tt, t, tmp, 0);    //填充sheet表格
          //  fprintf (f, "\t");
        }
          bzero (tmp, 255);
        }

    }
      xls_showBookInfo (pWB);

}
    }
      ret = callWorkbookDump (w, argv[2]);
      deleteWorkbook (w);
  printf ("argc=%d\n", argc);
  return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值