利用libxl库的loadRaw函数读取EXECL数据

利用libxl库的loadRaw函数读取EXECL数据

VC6的源代码(参考:https://www.libxl.com/write-excel-memory-buffer.html):

#include <iostream>
#include <fstream>
#include "libxl.h"
#pragma comment(lib,"libxl.lib")
using namespace libxl;
int main() 
{
    std::fstream stream("acb.xlsx", std::ios_base::in | std::ios_base::binary);//trunc binary 
    if(!stream) 
    {
        std::cout << "file not found" << std::endl;
        return 1;
    }
	
    stream.seekg(0, std::ios_base::end);
    unsigned size =stream.tellg();
    char* buf = new char[size];
    stream.seekg(0, std::ios_base::beg);
    stream.read(buf, size);
	//注意:EXECL的单元格有任何格式都表示有数据,其空值用"(null)"表示。
    Book* book = xlCreateXMLBook();
    book->setKey("cqbjht", "windows-2f292c0c02c2e7036ab26e6dacpcr7gf"); //设置key
	int readRow=0;//需读取数据的行号
	int sheetIndex=0;//工作表序号
	int rowsSum=0;//总行数
	int colSumMax=0;//最大列数
	int blankRowSum=10;//允许的最大空行数,-1没有空行。
	int blankRow=0;//空行数
	for(readRow=0;;++readRow)//readRow<=sheet->lastRow()
	{
		if(book->loadRaw(buf, size,sheetIndex,readRow,readRow))//读入数据
		{
			Sheet* sheet = book->getSheet(sheetIndex);
			if(sheet->lastCol()==0)//判断是否读到空行,是就结束。
			{
				//也可以继续读取100行,如果都是空行就结束。有大于blankRowSum行空数据就变态了。
				if(blankRow<=blankRowSum)
				{
					++blankRow;
				}else
				{
					printf("数据读取完成,总行数=%d,最大列数=%d\n",rowsSum-blankRow,colSumMax);
					break;
				}
			}
			if(sheet->lastCol()>colSumMax)
				colSumMax=sheet->lastCol();//计算最大列数
			++rowsSum;//计算总行数
			//显示读入的数据
			for(int readCol=0;readCol<sheet->lastCol();++readCol)
			{
				printf("%s,",sheet->readStr(readRow,readCol));
				blankRow=0;//复位空行标志
			}
			printf("%d\n",sheet->lastCol());
		}
		else
		{
			std::cout << book->errorMessage() << std::endl;
			return 1;
		}
	}
	
	delete[] buf;
	book->release();
	return 0;
}	


EXECL文件内容:
`在这里插入图片描述读入的数据,//注意:EXECL的单元格有任何格式都表示有数据,其空值用"(null)"表示。

在这里插入图片描述

`

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值