hur.cn - 华软网

 热门搜索

求教:vc纵向合并excel单元格,急盼

  作者:未知    来源:网络    更新时间:2010/7/8
各位好:
   我在程序里需要合并部分单元格以实现美观。横向的几个单元格可以合并,但是纵向的不行,手头么有MSDN,不知道如何实现纵向合并。这是横向合并:
Range myrange1=sheet.GetRange(COleVariant("A7"),COleVariant("A10"));
myrange1.SetHorizontalAlignment(COleVariant((short)1)); 
myrange1.Merge(COleVariant((short)1)); 
纵向合并如何实现呢? Merge的参数到底是什么意思呢?

  谢谢各位!!
---华软 网友回答---

Range   myallrange=workSheet.GetRange(COleVariant( "A1 "),COleVariant( "E1 "));
myallrange.SetHorizontalAlignment(COleVariant((short)3));
myallrange.Merge(COleVariant((short)1)); 
---华软网友回复---
//合并单元格的处理
 //包括判断第一个单元格是否为合并单元格,以及将第一个单元格进行合并
 Range unionRange;
 range.AttachDispatch(sheet.GetCells()); 
 unionRange.AttachDispatch(range.GetItem (COleVariant((long)1),COleVariant((long)1)).pdispVal );
  
 vResult=unionRange.GetMergeCells();    
 if(vResult.boolVal==-1)             //是合并的单元格    
 {
  //合并单元格的行数 
  range.AttachDispatch (unionRange.GetRows ());
  long iUnionRowNum=range.GetCount (); 
   
  //合并单元格的列数
  range.AttachDispatch (unionRange.GetColumns ());
  long iUnionColumnNum=range.GetCount ();   
  
  //合并区域的起始行,列
  long iUnionStartRow=unionRange.GetRow();       //起始行,从1开始
  long iUnionStartCol=unionRange.GetColumn();    //起始列,从1开始
  
 }
 else if(vResult.boolVal==0)   
 {//不是合并的单元格}
 
 //将第一个单元格合并成2行,3列
 range.AttachDispatch(sheet.GetCells()); 
 unionRange.AttachDispatch(range.GetItem (COleVariant((long)1),COleVariant((long)1)).pdispVal );
 unionRange.AttachDispatch(unionRange.GetResize(COleVariant((long)2),COleVariant((long)3)));
 unionRange.Merge(COleVariant((long)0));   //合并单元格
---华软网友回复---
不好意思,题目里代码写错了。横向单元格合并A7:E7可以实现。
Range myrange1=sheet.GetRange(COleVariant("A7"),COleVariant("E7"));
但是,纵向的A7:A10再利用这个函数就没实现:
Range myrange1=sheet.GetRange(COleVariant("A7"),COleVariant("A10"));
 请各位赐教!

---华软网友回复---
回复 purple2727:
   我目的是将现在的A7里面的内容占用A7 A8 A9这三个纵向的单元格,不是判断A7是不是合并单元格。改怎么合并A7 A8 A9 呢?
    谢谢
---华软网友回复---
最后还是自己看到了一篇2004年的帖子解决了。
COleVariant   vFalse((long)0),vTrue((long)1); 
range.SetHorizontalAlignment(COleVariant((long)-4108)); 
range.Merge(vFalse);
这样才能纵向合并.希望对大家有帮助。
---华软网友回复---
其实把merge的值变成0就可以了。
---华软网友回复---
引用 6 楼 bluevox3000 的回复:
其实把merge的值变成0就可以了。

帖子一年了 还能被你看到, 不容易啊,谢谢你的回复,下次试试。      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。