libxls 与 xlslib的结合

来源:互联网 发布:java程序员要学什么 编辑:程序博客网 时间:2024/04/28 20:56

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;
}
0 0
原创粉丝点击