怎样才能设置我想要设置的excel表中某行的格式,如颜色,字体大小。我想对于各位高手来说不是什么难题了。网上复制的东西就不要贴了,除非验证过。我找了很多资料,都不尽人意。还有想另外问一下,我找的一个资料上这样写着
pThisRange->GetRange("A1:C1")->GetInterior()->ColorIndex = 47 ;(好像不能用,也可能是好我弄错了)
这代码中的颜色值分别标示什么意思,如颜色中的47,16这些值分别是什么颜色呢,难道不是用RBG格式吗??不

解决方案 »

  1.   

    你在Excel下录制宏看下就知道了,
    你那个47的意思看下这个
    http://msdn.microsoft.com/en-us/library/aa199411(office.10).aspx
      

  2.   

    得到Range之后再获取Font,之后设置颜色
      

  3.   

    谢谢楼上的,你说的这个你有试过吗,我好像在网上看到过这个代码,但是好像不行,根本没有font这个属性
      

  4.   

    http://zhidao.baidu.com/question/40379986
      

  5.   

    pExcelRange=pExcelSheet.GetRange(vtCell1,vtCell2);
    TextEffectFormat pFont=pExcelRange.GetFont();
    Font newFont=pExcelRange.GetFont();
    newFont.SetName(COleVariant("黑体"));
    newFont.SetSize(COleVariant((long)9));
    newFont.SetBold(COleVariant((long)2));
    newFont.ReleaseDispatch();
    pBorders.ReleaseDispatch();
      

  6.   

    为什么我这里提示“SetBold”: 不是“Font”的成员;SetSize”: 不是“Font”的成员;“SetName”: 不是“Font”的成员。还有你pBorders.ReleaseDispatch();这是什么变量。
      

  7.   

     Range myrange;
    myrange=wsMysheet.GetRange(_variant_t(Cell),_variant_t(Cell));     Interior m_nterior = myrange.GetInterior();
        m_nterior.SetColor(COleVariant((long)color)); myrange.ReleaseDispatch();
      

  8.   

    Borders borders = myrange.GetBorders();        
    borders.SetLineStyle(COleVariant((short)1));                
    Border border = borders.GetItem(7);        
    border.SetWeight(COleVariant((short)3));        
    border = borders.GetItem(8);        
    border.SetWeight(COleVariant((short)3));       
    border = borders.GetItem(10);        
    border.SetWeight(COleVariant((short)3));        
    border = borders.GetItem(9);        
    border.SetWeight(COleVariant((short)3));

        Font m_Font;
    m_Font = myrange.GetFont();
    m_Font.SetName(COleVariant("宋体"));
    m_Font.SetSize(COleVariant((short)9));
      

  9.   

    谢谢楼上的了,但是提示 error C2065: “Interior”: 未声明的标识符,是不是有第三方的库?
      

  10.   

    谢谢楼上的了,但是提示 error C2065: “Interior”: 未声明的标识符,是不是有第三方的库?
      

  11.   

    你导入类型库了么....
    Excel 2003 应该是Excel.exe,然后添加你需要的类....
    如:Interior
      

  12.   

    你好,在吗,能加QQ聊聊吗,因为程序是以前同事弄的,excel的基本功能都有了,现在我要在他的上面动态更改格式,所以,有没有导类型库不知道。
      

  13.   

    你建一个新的工程试下吧。
    导入类型库从类向导里,添加新类,选FROM A TYPE LIB
      

  14.   

    那你通过什么方式操作的excel
      

  15.   


    你在类视图里选择导入类,然后选择TypeLib啥啥啥的(具体记不得了),然后选择Excel的库,把Font添加进去就可以了
      

  16.   

    是在类界面那添加类,然后选择TypeLib中的MFC类吗,然后在来源出选择文件选择到OFFICE的安装目录下,这里有一个OFFICE11和一个OFFICE12,我选了OFFICE11进去之后选到EXCEL.EXE,然后打开之后,界面左下列表内,就有你们说的那些类,我选择了Cnterior,和CFont0类,之后完成。完成之后类管理界面中有了这两个类,但是我用他们定义变量 CFont0 m_font; Cnterior m_inter; 又报“CFont0”: 未声明的标识符和“Cnterior”: 未声明的标识符错误,我想是不是没有包含头文件,然后我包含#include "CFont0.h"#include "Cnterior.h"两个头文件。这一下好,报了102个错误\cfont0.h(3) : warning C4278: “RGB”: 类型库“C:\\Program Files\\Microsoft Office\\OFFICE11\\EXCEL.EXE”中的标识符已经是宏;使用“rename”限定符
    \cfont0.h(3) : warning C4278: “RGB”: 类型库“C:\\Program Files\\Microsoft Office\\OFFICE11\\EXCEL.EXE”中的标识符已经是宏;使用“rename”限定符
    \cfont0.h(3) : warning C4192: 导入类型库“IFont”时自动排除“C:\\Program Files\\Microsoft Office\\OFFICE11\\EXCEL.EXE”
    \projectsaferule\cfont0.h(3) : warning C4192: 导入类型库“IPicture”时自动排除“C:\\Program Files\\Microsoft Office\\OFFICE11\\EXCEL.EXE”
    1>g:\cfont0.h(3) : warning C4278: “DialogBox”: 类型库“C:\\Program Files\\Microsoft Office\\OFFICE11\\EXCEL.EXE”中的标识符已经是宏;使用“rename”限定符
    \cfont0.h(3) : error C2872: “Font”: 不明确的符号
     可能是“f:\vs2005\vc\include\comdef.h(310) : Font”
     或“f:\vs2005\vc\platformsdk\include\gdiplusheaders.h(244) : Gdiplus::Font”
    \cfont0.h(3) : error C2872: “Font”: 不明确的符号
    最多的就是这个错误或“f:\vs2005\vc\platformsdk\include\gdiplusheaders.h(244) : Gdiplus::Font”
    1>...\cfont0.h(3) : warning C4278: “CopyFile”: 类型库“C:\\Program Files\\Microsoft Office\\OFFICE11\\EXCEL.EXE”中的标识符已经是宏;使用“rename”限定符
    1>...\cfont0.h(3) : error C2872: “Font”: 不明确的符号因为这个项目是我后来接手的,之前已经实现了excel的导出功能,只是要在现有的基础上对导出格式进行修改。所以是不是之前已经导入这些库了,还有,我在模块的CPP文件首部,发现了#include "excel.h"这个语句,我就确定了,现在大侠们能告诉我,现在这种情况,我要怎么进行调整能。谢谢了!
      

  17.   

    你导入你需要的类对象就行了,然后实现你需要的功能.....
    我试了下,没有这两个Cnterior,和CFont0类对象好像........
    没有这个#include "CFont0.h"#include "Cnterior.h"直接#include "excel.h
      

  18.   

    我就是直接导入的这两个类,然后VS2005的类视图中就多了Cnterior,和CFont0两个类,项目文件下面也多了那两个头文件和CPP文件。
      

  19.   

    我刚刚新建一个,项目,还是这样添加的,依然是添加到这里面,选择类的时候,名字是Font和Interior但是加进来之后,在类界面处还是CFont0和Cnterior两个类。晕死了实在应该不是什么难题,一个这东西卡这么久。晕
      

  20.   

    你是不是导入错误了...我的6.0
    打开添加类向导(CTRL+W)->Automation->AddClass 下拉 From a type Library然后选择你说的OFFICE11那个目录中找到Excel.exe.........
      

  21.   

    我刚刚发现CFont0.h和Cnterior.h这两个文件是0K
      

  22.   

    我在我的类视图中找到_Font类,包含头文件之后,
    _Font m_font;
    m_font = rgMyRge.GetFont();
    if(m_font == NULL) return ;
    rang_temp.AttachDispatch(rgMyRge.GetCells()); 
    rang_temp.AttachDispatch((rang_temp.GetItem (COleVariant(long(1)), COleVariant(long(1)))).pdispVal); 
    m_font.AttachDispatch (rang_temp.GetFont()); 
    m_font.SetColor((long)3);
    现在是不报错咯,但是运行到这里弹出找不到成员,我跟踪发现是m_font.SetColor((long)3);
    这一句的问题,但我查看了_Font里面却是有setcolor的成员函数阿??真奇怪咯,实在不是什么一个很难的东西,怎么就老出问题。。还请大家指点!!!
      

  23.   

    我已经弄好了,网上的代码可以用。我的方法是,首先用V6.0新建一个项目,然后在添加类里面,_Application,Workbooks,_Workbook, Worksheets,_Worksheet,Range,Range,interior,font这些要用到的类添加进去,编译后,再用VS2005打开是可以的。但是我直接用VS2005新建的一个工程做试验,在类界面那添加类,然后选择TypeLib中的MFC类,然后在来源出选择文件选择到OFFICE的安装目录下,这里有一个OFFICE11和一个OFFICE12,我选了OFFICE11进去之后选到EXCEL.EXE,然后打开之后,界面左下列表内,就有那些_Application,Workbooks,_Workbook, Worksheets,_Worksheet,Range,Range,interior,font类,就不行,他只加入了这些类的头文件,编译的时候报错没有实现方法。因为,我是要在现有的项目上增加修改Excel格式功能,所以不可能再去用V6.0的先新建,然后VS2005去打开。想问下大侠们有遇到这种问题吗,怎么解决的?谢谢了。
      

  24.   

    好像用2005导入的确会报错的,你自己的办法就是解决办法,用vc6生成excel.cpp和excel.h,然后导入到你用vs2005的工程中使用。这个帖子,也有和你差不多的问题,
    http://topic.csdn.net/u/20101025/11/860e0032-5c3a-4ca9-95e4-b2d80dfd9cec.html
    这个,有讲的比较仔细
    http://topic.csdn.net/u/20100728/17/8c0d68d1-d774-48ab-b7ac-bd095d53a4a3.html
    里面有句话,“m_ExlApp一定要释放,否则程序结束后还会有一个Excel进程驻留在内存中,而且程序重复运行的时候会出错”,我要是早看到就好了,自己花了好久才找到问题所在
      

  25.   

    然后打开之后,界面左下列表内,就有那些_Application,Workbooks,_Workbook, Worksheets,_Worksheet,Range,Range,interior,font类,就不行,他只加入了这些类的头文件,编译的时候报错没有实现方法。
    ????
    把左侧需要的类添加到右侧,确定就可以了啊,我一直这么做的,没碰到你说的“编译的时候报错没有实现方法”。
      

  26.   

    pThisRange->GetRange("A1:C1")->GetInterior()->ColorIndex = 47 
    这是设置A1:C1单元格背景色,47是这个色的索引值,你可以在EXCEL的单元格设置里,找到这个颜色
      

  27.   

    在excel里把你想要的操作录制成宏(vba),保存
    然后通过excelapp的方法调用这个宏不就可以了么?