亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? shtmlreport.cpp

?? 如果在您的軟件中需要輸出報表
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
	COLCELLINFO cci;
	CString beginStr,cellStr;
	long	beginColSpan=0,colSpan;
	int		begin=-1,end;
	for(int i=0;i<colCells;i++)
	{
		cci=colArray.GetAt(i);
		if(cci.pDisCell==NULL)
			continue;
		IHTMLElement *icellElement;
		hr=cci.pDisCell->QueryInterface(IID_IHTMLElement,(void **)&icellElement);
		ASSERT(hr==S_OK&&icellElement!=NULL);
		cellStr=GetElementText(icellElement,inner_text);
		IHTMLTableCell *icell;
		hr=cci.pDisCell->QueryInterface(IID_IHTMLTableCell,(void **)&icell);
		ASSERT(hr==S_OK&&icell!=NULL);
		hr=icell->get_colSpan(&colSpan);
		if(cellStr!=beginStr||colSpan!=beginColSpan)
		{
			if(begin!=-1&&end-begin+1>1)
			{
				ASSERT(beginColSpan!=0);
				MergeColPrivate(pIRows,colArray,begin,end);
			}
			begin=end=i;
			beginStr=cellStr;
			beginColSpan=colSpan;
		}else
			end=i;
		icell->Release();
		icellElement->Release();
	}
	if(begin!=end)
		MergeColPrivate(pIRows,colArray,begin,end);
	pITable->Release();
	return TRUE;
}

//***********************************************
//	設置索引列的顯示格式:遵循sprintf函數的規則
//***********************************************
void CSHTMLReport::SetIndexFormat(CString strIndexFormat)
{
	m_strIndexFormat=strIndexFormat;
}

//*************************************************
//	獲取元素的字符
//*************************************************
CString CSHTMLReport::GetElementText(IHTMLElement *pElement, int type)
{
	CString str= "";
	BSTR bsStr = str.AllocSysString();
	switch(type)
	{
	case inner_text:
		pElement->get_innerText(&bsStr);
		break;
	case inner_html:
		pElement->get_innerHTML(&bsStr);
		break;
	case outer_text:
		pElement->get_outerText(&bsStr);
		break;
	case outer_html:
		pElement->get_outerHTML(&bsStr);
		break;
	default:
		ASSERT(0);
		break;
	}
	_bstr_t bstStr;
	bstStr = bsStr;
	str.Format("%s",(LPCTSTR)bstStr);
	SysFreeString(bsStr);
	return str;
}

//********************************************************
//	設置元素字符
//*******************************************************
BOOL CSHTMLReport::SetElementText(IHTMLElement *pElement, int type,CString str)
{
	BSTR bsStr = str.AllocSysString();
	HRESULT hr;
	switch(type)
	{
	case inner_text:
		hr=pElement->put_innerText(bsStr);
		break;
	case inner_html:
		hr=pElement->put_innerHTML(bsStr);
		break;
	case outer_text:
		hr=pElement->put_outerText(bsStr);
		break;
	case outer_html:
		hr=pElement->put_outerHTML(bsStr);
		break;
	default:
		ASSERT(0);
		break;
	}
	SysFreeString(bsStr);
	return (hr==S_OK);
}

//******************************************************************
//	在指定的行中從指定的起始及終止位置進行合并:內部函數
//******************************************************************
void CSHTMLReport::MergeRowPrivate(IHTMLTableRow *pIRow, long begincol, long endcol)
{
	long			colSpan=0;
	IHTMLElementCollection *picells;
	HRESULT hr=pIRow->get_cells(&picells);
	for(long i=endcol;i>=begincol;i--)
	{
		IDispatch *discell;
		hr=picells->item(COleVariant(i),COleVariant(short(0)),&discell);
		ASSERT(hr==S_OK&&discell!=NULL);
		IHTMLTableCell *picell;
		hr=discell->QueryInterface(IID_IHTMLTableCell,(void **)&picell);
		ASSERT(hr==S_OK&&picell!=NULL);
		long tmpColSpan;
		picell->get_colSpan(&tmpColSpan);
		colSpan+=tmpColSpan;
		if(i==begincol)
			picell->put_colSpan(colSpan);
		else
			pIRow->deleteCell(i);
		picell->Release();
	}
}

//******************************************************************
//	在指定的行集中對指定列從指定的起始及終止位置進行合并:內部函數
//******************************************************************
void CSHTMLReport::MergeColPrivate(IHTMLElementCollection *pIRowArray,CSArray<COLCELLINFO> &colArray,long beginrow, long endrow)
{
	IHTMLTableCell *ibegincell=NULL;
	long			rowSpan=0;
	for(int i=beginrow;i<=endrow;i++)
	{
		IHTMLTableCell *icell;
		COLCELLINFO cci=colArray.GetAt(i);
		ASSERT(cci.iIndexInRow!=-1);
		IDispatch *disrow;
		HRESULT hr=pIRowArray->item(COleVariant(cci.iRow),COleVariant(short(0)),&disrow);//iRow row
		if(hr!=S_OK||disrow==NULL) return ;
		IHTMLTableRow *pIRow;
		hr=disrow->QueryInterface(IID_IHTMLTableRow, (void**)&pIRow);
		ASSERT(hr==S_OK);
		//get cell collection
		IHTMLElementCollection *rowcells;
		pIRow->get_cells(&rowcells);
		//get cell element
		IDispatch *discell;
		hr=rowcells->item(COleVariant(cci.iIndexInRow),COleVariant(short(0)),&discell);
		ASSERT(hr==S_OK&&discell!=NULL);
		
		hr=discell->QueryInterface(IID_IHTMLTableCell,(void **)&icell);
		ASSERT(hr==S_OK&&icell!=NULL);
		long       tmpRowSpan;
		hr=icell->get_rowSpan(&tmpRowSpan);
		ASSERT(hr==S_OK);
		rowSpan+=tmpRowSpan;
		if(i==beginrow)
		{
			ibegincell=icell;
		}else{
			icell->Release();										
			if(cci.iIndexInRow!=-1)
				pIRow->deleteCell(cci.iIndexInRow);
		}
		pIRow->Release();
	}
	ibegincell->put_rowSpan(rowSpan);
	ibegincell->Release();
}

//******************************************************************
//	構造指定列的集合:內部函數
//******************************************************************
BOOL CSHTMLReport::MakeColDispatchCollection(
	IHTMLElementCollection *pIRowArray/*in*/,
	long iCol/*in*/,
	CSArray<COLCELLINFO> &colArray/*out*/)
{
	long rows;
	HRESULT hr=pIRowArray->get_length(&rows);
	ASSERT(hr==S_OK);
	IHTMLElementCollection **rowcellsarray =new IHTMLElementCollection *[rows];

	//get cell collect array
	for(int j=0;j<rows;j++)
	{
		//get specisfied row
		IDispatch *disrow;
		hr=pIRowArray->item(COleVariant(long(j)),COleVariant(short(0)),&disrow);//iRow row
		if(hr!=S_OK||disrow==NULL) return FALSE;
		IHTMLTableRow *pIRow;
		hr=disrow->QueryInterface(IID_IHTMLTableRow, (void**)&pIRow);
		ASSERT(hr==S_OK);
		//get cell collection
		pIRow->get_cells(&rowcellsarray[j]);
		pIRow->Release();
	}
	
	struct colindexinfo{
		long index;	//在行中的索引
		long iCol;	//在列中的索引
		long colSpan;//列跨越
	};
	struct colindexinfo *ciis=new struct colindexinfo[rows];
	memset(ciis,0,rows*sizeof(struct colindexinfo));

	for(j=1;j<=iCol;j++)//追蹤到第iCol列:初始化的數據即為第一列的數據,不需要計算
	{
		for(int k=0;k<rows;k++)
		{
			if(ciis[k].iCol+ciis[k].colSpan>j) continue;
			IDispatch *discell;
			hr=rowcellsarray[k]->item(COleVariant(ciis[k].index),COleVariant(short(0)),&discell);
			ASSERT(hr==S_OK&&discell!=NULL);
			IHTMLTableCell *icell;
			hr=discell->QueryInterface(IID_IHTMLTableCell,(void **)&icell);
			ASSERT(hr==S_OK&&icell!=NULL);
			long colSpan,rowSpan;
			hr=icell->get_colSpan(&colSpan);
			ASSERT(hr==S_OK);
			hr=icell->get_rowSpan(&rowSpan);
			icell->Release();

			ciis[k].index++;
			ciis[k].iCol+=colSpan;
			ciis[k].colSpan=colSpan-1;
			for(int kk=k+1;kk<k+rowSpan;kk++)
			{
				if(ciis[kk].iCol+ciis[kk].colSpan>j){
					delete []ciis;
					delete []rowcellsarray;
					return FALSE;
				}
				ciis[kk].iCol++;
				ciis[kk].colSpan=0;
			}
			k+=rowSpan-1;
		}
	}
	for(int i=0;i<rows;i++)
	{
		if(ciis[i].colSpan){
			COLCELLINFO cci={i,NULL,-1};
			colArray.Add(cci);
			continue;
		}
		IDispatch *discell;
		hr=rowcellsarray[i]->item(COleVariant(ciis[i].index),COleVariant(short(0)),&discell);
		ASSERT(hr==S_OK&&discell!=NULL);
		IHTMLTableCell *icell;
		hr=discell->QueryInterface(IID_IHTMLTableCell,(void **)&icell);
		ASSERT(hr==S_OK&&icell!=NULL);
		long rowSpan;
		hr=icell->get_rowSpan(&rowSpan);
		icell->Release();

		COLCELLINFO cci;
		cci.iRow=i;
		cci.iIndexInRow=ciis[i].index;
		cci.pDisCell=discell;
		colArray.Add(cci);
		i+=rowSpan-1;
	}
	delete []ciis;
	delete []rowcellsarray;
	return TRUE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美午夜宅男影院| 丝袜a∨在线一区二区三区不卡| 国产偷国产偷亚洲高清人白洁 | 成人午夜视频网站| 欧美唯美清纯偷拍| 久久久综合九色合综国产精品| 一区二区三区影院| 国产一区999| 91精品在线免费| 亚洲色图在线播放| 国产麻豆成人精品| 欧美成人免费网站| 亚洲大型综合色站| 91农村精品一区二区在线| 久久久亚洲精品石原莉奈| 日韩电影在线观看一区| 欧美亚洲动漫制服丝袜| 中文字幕在线不卡一区 | 洋洋成人永久网站入口| 国产精品456| 欧美大片一区二区三区| 日韩精品一二区| 精品视频一区二区三区免费| 亚洲免费看黄网站| 91免费看`日韩一区二区| 中文字幕第一区综合| 久草在线在线精品观看| 精品久久五月天| 美女一区二区在线观看| 日韩一区二区影院| 免费在线欧美视频| 欧美日韩国产精选| 日韩高清在线观看| 欧美一区二区三区在线视频| 日本欧美在线观看| 日韩一级大片在线观看| 奇米影视在线99精品| 日韩一区二区三区精品视频| 日韩国产欧美三级| 日韩一区二区三| 久久69国产一区二区蜜臀| 久久久久久久久久看片| 国产乱国产乱300精品| 国产丝袜欧美中文另类| 波多野结衣视频一区| 国产精品国产a级| 91丝袜美女网| 亚洲第一成年网| 精品国产亚洲在线| 成人午夜激情片| 亚洲免费高清视频在线| 欧美肥胖老妇做爰| 精品一区二区日韩| 国产精品白丝在线| 欧美日韩一级二级三级| 日本不卡一区二区三区| 久久精品夜色噜噜亚洲a∨| 国产成人亚洲精品青草天美| 综合欧美亚洲日本| 欧美日韩黄色一区二区| 麻豆久久久久久| 中文字幕一区免费在线观看| 精品污污网站免费看| 九九视频精品免费| 亚洲三级理论片| 制服丝袜一区二区三区| 国产精品一区一区三区| 一区二区成人在线| 日韩免费成人网| 99riav一区二区三区| 日韩vs国产vs欧美| 国产精品污www在线观看| 欧美伊人久久久久久久久影院| 看电影不卡的网站| 亚洲免费大片在线观看| 26uuu久久综合| 91久久香蕉国产日韩欧美9色| 免费在线看一区| 亚洲精品中文字幕在线观看| 欧美大片日本大片免费观看| 欧洲av在线精品| 国产精品一区免费在线观看| 亚洲高清不卡在线| 中文一区二区完整视频在线观看| 欧美日韩一级片网站| 福利一区福利二区| 麻豆精品一区二区三区| 亚洲综合在线观看视频| 久久久午夜精品| 欧美电影免费观看高清完整版在线 | 国产精品无码永久免费888| 欧美日韩国产系列| 91老师片黄在线观看| 久久99精品国产.久久久久久| 亚洲二区在线视频| 国产精品女上位| 久久久亚洲精品石原莉奈| 欧美一级视频精品观看| 欧美午夜精品理论片a级按摩| 成人午夜av电影| 国产精品一区免费在线观看| 久久成人免费电影| 日韩精品免费专区| 午夜精品久久久久久久久久| 樱花草国产18久久久久| 中国av一区二区三区| 中文av一区二区| 国产精品欧美综合在线| 国产视频亚洲色图| 亚洲国产精品成人综合| 国产亚洲欧美日韩在线一区| www激情久久| 欧美精品一区二区三区一线天视频 | 久久女同性恋中文字幕| 国产亚洲精品超碰| 国产很黄免费观看久久| 乱一区二区av| 美女在线观看视频一区二区| 日本人妖一区二区| 裸体一区二区三区| 裸体健美xxxx欧美裸体表演| 美女一区二区在线观看| 久久精工是国产品牌吗| 精品中文字幕一区二区| 国产资源精品在线观看| 国内精品自线一区二区三区视频| 麻豆精品视频在线观看免费| 黄网站免费久久| 精久久久久久久久久久| 国产sm精品调教视频网站| 成人v精品蜜桃久久一区| 99riav一区二区三区| 欧美怡红院视频| 日韩欧美一级二级三级久久久| 精品乱人伦一区二区三区| 久久久久久久综合日本| 中文字幕在线一区| 亚洲18女电影在线观看| 美女诱惑一区二区| 成人综合在线观看| 欧美日韩一区二区三区视频| 日韩无一区二区| 国产日韩欧美高清| 亚洲电影一级黄| 日本vs亚洲vs韩国一区三区二区| 国产精品一区二区在线看| 99在线热播精品免费| 欧美老人xxxx18| 久久精品人人做| 一区二区欧美精品| 精品一区二区三区免费毛片爱| 94-欧美-setu| 欧美人xxxx| 亚洲国产精华液网站w | 久久嫩草精品久久久精品| 中文字幕va一区二区三区| 亚洲自拍偷拍九九九| 狠狠色2019综合网| 91香蕉视频黄| 欧美成人福利视频| 亚洲男人天堂av网| 国产一区在线观看视频| 色综合久久66| 久久久久国产精品免费免费搜索| 亚洲图片自拍偷拍| 成人综合婷婷国产精品久久蜜臀| 欧美日韩国产一级片| 国产性做久久久久久| 日本少妇一区二区| 91传媒视频在线播放| 精品国产a毛片| 日日摸夜夜添夜夜添国产精品| 成人开心网精品视频| 日韩色在线观看| 一区二区三区资源| 成人激情文学综合网| 日韩免费成人网| 婷婷综合另类小说色区| 99久久久精品| 亚洲国产精品传媒在线观看| 九九国产精品视频| 在线电影欧美成精品| 一区二区三区国产豹纹内裤在线 | 久久久噜噜噜久久中文字幕色伊伊| 亚洲五码中文字幕| 99久久久国产精品| 亚洲国产精品黑人久久久| 国产一区二三区| 日韩精品中文字幕在线不卡尤物| 亚洲国产乱码最新视频| 日本乱人伦一区| 1区2区3区国产精品| 成人看片黄a免费看在线| 久久久噜噜噜久噜久久综合| 精品一区二区三区免费| 337p粉嫩大胆色噜噜噜噜亚洲| 九九视频精品免费| 欧美成人官网二区| 狠狠色丁香久久婷婷综合_中| 精品三级在线观看|