在做一个有关Excel操作的程序,对合并后的单元格操作有莫大的疑问?比如有G2,G4想合并成一列,通过一下实现了合并的效果(其中G2位于第2行第7列,G4位于第4行第7列)
 Range   m_rang;      
 m_rang.AttachDispatch(m_rang.GetRange(_variant_t("G2"),_variant_t("G4")),TRUE);  
 m_rang.Merge(_variant_t((long)0));但通过下面语句赋值的时候,m_rang.SetItem(_variant_t((long)2),_variant_t((long)7),_variant_t("读数差(mm)"));
发现单元格尽然已合并后的单元格为初始单元格。即本想在第2行第7列这个单元格显示,但是却显示在第3行第13列了;
偏移了1行7列。而且后面的数据也就因为这个原因都偏移了。请大家帮忙指点怎么才能够避免这个了?或者对合并单元格应该如何操作了?注:我用的是 OLE(对象链接与嵌入)技术,没有用CDatabase来操作。

解决方案 »

  1.   

     Range m_rang(sheet.GetRange(_variant_t("G2"),_variant_t("G4")));   
     m_rang.Select();
     m_rang.Merge( _variant_t(false) );
      

  2.   


    谢谢 4 楼 zgl7903 ,但是还有个问题就是如果这个在第一列就会出现问题。。提示选定区域包含多重数据,接着会出现问题的。
      

  3.   

    Range tmpRange = excelWorksheet.GetRange( COleVariant( _T("A1") ), COleVariant( _T("E1") ) );
    tmpRange.Select();
    tmpRange.Clear();  // 清空一下就行了
    tmpRange.Merge( vFalse ); 
    tmpRange.SetValue(COleVariant( _T("这里写内容 ")) );