兄弟我需要对一个excel文件里的某个行列的值,请高手指点一下,急用

解决方案 »

  1.   

    Range对象
    VC++写入excel的简单介绍 
     
    首先先引入excel application的几个类
    通过菜单 View->ClassWizard->Add Class->From a type library 引入excel的olb文件,一般在office目录下,可能为excel8.olb,excel9.olb,xlen32.olb。导入类applicaton worksheets _worksheet workbooks _workbook在你的程序中先include该类文件的头文件。
    在序入口点添加:
    if(!AfxOleInit()){
       AfxMessageBox("Could not initialize COM dll");
       return FALSE;
    }//装载ole
     
    在所要用到的dialog装载代码出添加:
    if(!app.CreateDispatch("Excel.Application")){
       AfxMessageBox("Couldn't start Excel and get Application object.");
       return FALSE;
    }//装载excel对象
     
    主代码:
          _Application app;
          COleVariant
                     covTrue((short)TRUE),
                     covFalse((short)FALSE),
                     covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
          Workbooks books;
          _Workbook book;
          Worksheets sheets;
          _Worksheet sheet;
          Range range;
          Range cols;
          books = app.GetWorkbooks();
          book = books.Add (covOptional);
          sheets =book.GetSheets();
          sheet = sheets.GetItem(COleVariant((short)1));
          //Fill cells A1, B1, C1, and D1 one cell at a time with "headers".
          range = sheet.GetRange(COleVariant("A1"),COleVariant("A1"));
          range.SetValue(COleVariant("First Name"));
          range = sheet.GetRange(COleVariant("B1"),COleVariant("B1"));
          range.SetValue(COleVariant("Last Name"));
          range = sheet.GetRange(COleVariant("C1"),COleVariant("C1"));
          range.SetValue(COleVariant("Full Name"));
          range = sheet.GetRange(COleVariant("D1"),COleVariant("D1"));
          range.SetValue(COleVariant("Salary"));
          //Format A1:D1 as bold, vertical alignment = center.
          range = sheet.GetRange(COleVariant("A1"), COleVariant("D1"));
          font = range.GetFont();
          font.SetBold(covTrue);
          range.SetVerticalAlignment(
                   COleVariant((short)xlVAlignCenter));
     
          app.SetVisible(TRUE);
          app.SetUserControl(TRUE);
     
    在office2003的excel对象中 没有_application _workbook _worksheet  代替的是application workbook worksheet
      
      

  2.   

    http://www.vchelp.net/itbookreview/view_paper.asp?paper_id=770
      

  3.   

    http://www.vckbase.com/document/viewdoc.asp?id=421
      

  4.   

    方法很多啊,楼上兄弟们说的automation方法,用于调用excel内部操作,不过office automation偶觉得用VB比较方便,用VC的话,需要掌握的代码就有很多,而且资料很少。
    如果你使用automation,还查东西很难的话,有3样东西,一个是excel自带的用于VB自动化的帮助文件,是.chm的,原来office2k里面word对应的好像是VBAWRD9.chm,自己找找吧,另外是加入你的工程的那个tlb文件,可以用OLE View打开查看,导出来之后可以查找一些枚举变量的定义,因为在使用的时候经常会遇到用一些常量作为定义。
    另外就是你自己添加的类了,有这3样东西,虽然难点,但是操作excel也没什么问题。我个人推荐使用通常的数据库方式,无论使用ODBC方式带DSN还是用其他方法,都支持excel数据的读取,到时候当作普通数据库就行了。做dsn的话,.csv和.exl都没问题。
      

  5.   

    一直都用数据库的方式读,对automation方法知道的很少,谁知道这次的文件很怪异,是html文件以excel文件后缀名保存的,所以数据库方式总是打不开,automation方式按楼上的兄弟说的方式打来总是连接错误,最后只好解析html文本了。
      

  6.   

    http://www.vckbase.com/document/viewdoc/?id=693