求教:如何获得Excel文件的表单名?我在做一个Excel文件得导入程序,不知道怎么获得文件的表单名?默认情况下,Excel新建会生成sheet1,sheet2,sheet3。假如我自定义表单名,那么再数据查询下,怎么找到这个表单?
请高手赐教!在下不胜感激!

解决方案 »

  1.   

    你并不需要知道具体每一张表的名字,相反你也可以获得每一张表的名字,但如果你不知道表的名字,你必须知道这张表在Excel中是第几张表,代码如下:

        //启动EXCEL
        _Application oApp;
        oApp.CreateDispatch("Excel.Application");
        if (!oApp)
        {
            AfxMessageBox("不能启动EXCEL");
            return;
        }
        //向工作簿中添加新工作表
        Workbooks oBooks = oApp.GetWorkbooks();
        _Workbook oBook = oBooks.Add(vOpt);
        Worksheets oSheets = oBook.GetWorksheets();
        //获取第一张工作表
        _Worksheet oSheet = oSheets.GetItem(COleVariant((short)1));其中改变GetItem中的参数可以得到第n张表,如果没有改表名的话,1表是第一张表即sheet1
    得到表名是_Worksheet类的一个成员函数,我记不清了,你找一下就知道了
      

  2.   

    能将表单的名字以CString的形势产生么?或者说,_Worksheet能变成CString类型么?
    Thanks very much!
      

  3.   

    CString sheetname=oSheet.GetName();
      

  4.   

    _Workbook oBook = oBooks.Add(vOpt);提示:vOpt未定义;我查到需要一个add(const VARIANT &Template);请问这个变量,是类成员还是需要重新定义?再次感谢!
      

  5.   

    不好意思,忘了说了,在前面声明一下:
    COleVariant vOpt(DISP_E_PARAMNOTFOUND,VT_ERROR);
      

  6.   

    给你写了一个详细的:#include "excel9.h"void CExcelDlg::OnButton1() 
    {
    CoInitialize(NULL);
    COleVariant vOpt(DISP_E_PARAMNOTFOUND, VT_ERROR);
    //启动EXCEL
        _Application oApp;
        oApp.CreateDispatch("Excel.Application",NULL);
        if (!oApp)
        {
            AfxMessageBox("不能启动EXCEL");
            return;
        }
        //向工作簿中添加新工作表
    Workbooks oBooks = oApp.GetWorkbooks();
        _Workbook oBook = oBooks.Add(COleVariant("C:\\My Documents\\c++\\shi\\excel\\xxx.xls"));
        Worksheets oSheets = oBook.GetWorksheets();
        //获取第一张工作表
    _Worksheet oSheet = oSheets.GetItem(COleVariant((short)1));
    CString a=oSheet.GetName();
    MessageBox(a);
    CoUninitialize();
    }