一、搜索Excel中有数据的块的位置(左上角位置、宽度和高度)
伪代码:
//搜寻数据块的左上角位置
for 从第1行开始到第10行
for 从第1列开始到第10列
if 该单元格不为空
获得数据块的左上角位置,退出循环。
else 继续
//搜寻数据库的宽度,数据块左上角位置为(a,b)
int index=1;//指示数据块宽度
while(1)
if 第a行的b+index列为空, 退出循环
index++;
获得数据块的宽度为index
//搜寻数据库的高度,数据块左上角位置为(a,b)
index=1;//指示数据块高度
while(1)
if 第a+index行的b列为空, 退出循环
index++;
获得数据块的高度为index
//获取起始行、列和终止行、列
int startrow=0;
int endrow=0;
int startcolumn=0;
int endcolumn=0;
int Flagout=0;//退出双重循环指示
if (sheetread)
{
//搜寻数据块的左上角位置
for(int row=0;row<10;row++)//for 从第1行开始到第10行
{
for(int col=0;col<10;col++)//for 从第1列开始到第10列
{
CellType celltype = sheetread->cellType(row, col);
if(celltype != CELLTYPE_EMPTY)//if 该单元格不为空
{
//获得数据块的左上角位置,退出循环。
startrow=row;
startcolumn=col;
Flagout=1;
break;
}
//else 继续
}
if(Flagout==1)
{
break;
}
}
//搜寻数据库的宽度,数据块左上角位置为(a,b)
int index=1;//指示数据块宽度
while(1)
{
CellType celltype = sheetread->cellType(startrow, startcolumn+index);
if(celltype == CELLTYPE_EMPTY)//if 第a行的b+index列为空, 退出循环
{
break;
}
index++;
}
//获得数据块的宽度为index
endcolumn=startcolumn+index-1;
//搜寻数据库的高度,数据块左上角位置为(a,b)
index=1;//指示数据块高度
while(1)
{
CellType celltype = sheetread->cellType(startrow+index, startcolumn);
if(celltype == CELLTYPE_EMPTY)//if 第a+index行的b列为空, 退出循环
{
break;
}
index++;
}
//获得数据块的高度为index
endrow=startrow+index-1;
qDebug() <<"数据块位置:"<<startrow<<startcolumn<<endrow<<endcolumn;