描述:
在合并单元阁的时候,我横着合并就可以实现,但是竖着合并就不好用,哪个大虾遇到过这样的问题啊!给小弟点提示啊!
range = sheet.get_Range(COleVariant("A1"),COleVariant("D1"));
range.Merge(COleVariant(short(4)));
这个就没办法实现合并!!!!
range = sheet.get_Range(COleVariant("A1"),COleVariant("A7"));
range.Merge(COleVariant(short(7)));
解决方案1:
BOOL COptExcelFile::MergeItems(long nRow1, long nRow2, long nCol1, long nCol2)
{
Range r;
char s1[16], s2[16];
if(!m_bInitialized)
return FALSE;
memset(s1, 0, 16);
memset(s2, 0, 16);
if((nCol1-1) / 26 > 0)
sprintf(s1, "%c", (nCol1-1) / 26 + 'A' - 1);
if((nCol2-1) / 26 > 0)
sprintf(s2, "%c", (nCol2-1) / 26 + 'A' - 1);
sprintf(s1 + strlen(s1), "%c%d", ((nCol1-1) % 26) + 'A', nRow1);
sprintf(s2 + strlen(s2), "%c%d", ((nCol2-1) % 26) + 'A', nRow2);
try{
r = m_Sheet.GetRange(_variant_t(s1),_variant_t(s2));
r.SetMergeCells(_variant_t(true));
r.DetachDispatch();
}CATCH_EXCEL;
return TRUE;
}
Across Variant 类型,可选.若为True,则将指定区域内的每一行合并为一个合并单元格.默认值为False.
COleVariant vFalse((long)0),vTrue((long)1);
range.Merge(vFalse);
没有试,不确定是否正确.