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
- libxls 与 xlslib的结合
- xlslib和libxls
- libxls 与 数据库
- libxls的使用
- libxls库的使用
- xlsLib编译
- *与++的结合
- Lex与Yacc的结合
- JSP与XML的结合
- Lex与Yacc的结合
- JSTL与Struts的结合
- JSP与XML的结合
- Velocity与struts的结合
- sring 与hibernate的结合
- JSTL与struts的结合
- vs 与 vss的结合
- Spring 与hibernate 的结合
- CSS与JS的结合
- Java 图像处理类库:Apache Commons Imaging
- Spring Aop事务管理
- OpenSessionInViewFilter原理以及为什么要用OpenSessionInViewFilter
- 错排问题
- [leetcode]Valid Parentheses
- libxls 与 xlslib的结合
- iOS屏幕旋转
- systemd service
- Java ReadWriteLock 用法
- 中英文及数字混合排序
- 18种创意人与你不同的做事方式
- go语言:数据库操作之MySql
- Cocos2d console使用手册
- 白话windows多线程同步之可等待计时器内核对象