1、怎样获取所有表单的名称?2、当单元格是以文本形式存储的数字时,读出来的总是个空值。如何读出正确值?(这种单元格的左上角会显示一个小绿三角形,由于是财务报表,这种情况很多,在EXCEL里能正常工作,而改起来很麻烦,所以希望很正确读出来)。

解决方案 »

  1.   

    还有一个很麻烦的问题!就是Excel的公式无法起作用,而且加公式的地方无法修改!
      

  2.   

    1
    参考
    http://community.csdn.net/Expert/topic/3138/3138542.xml?temp=.44038032
    你是怎么读的,也用文本形式读出来看看
      

  3.   

    laiyiling(最熟悉的陌生人) :
      1。你引用的代码段是用ADO连的,偶不很清楚,不知是否有只用ODBC的方法?
      2。m_Database.OpenEx(..)//成功
         rs.Open(..)//成功
         rs.GetFieldValue(nField, str)//正常的文本、数字、日期字段都能成功
         对于那种异常情况,我用rs.GetODBCFieldInfo得到的类型是SQL_DOUBLEkillfocus(killfocus) 
      那些单元格好像没有公式,但是是从用友里导出来的。如果是用公式,就不能得到一些想关的信息吗?多谢!  
      

  4.   


    熬了一通宵,没用ODBC,但终于都搞定了! 
    为使后来的兄弟免受一夜之苦,将相关代码贴出来:BOOL GetCellValue(LPCTSTR lpszFile, 
      LPCTSTR lpszCell/*Like "A1"*/, 
      CString& strValue)
    {
    _Application app; 
    Workbooks books; 
    _Workbook book; 
    Worksheets sheets; 
    _Worksheet sheet; 
    Range range; 

    //创建Excel 2000服务器(启动Excel) 
    if (!app.CreateDispatch("Excel.Application",NULL)) 

    AfxMessageBox("创建Excel服务失败!"); 
    return FALSE;


    books.AttachDispatch(app.GetWorkbooks(),true); 
    book.AttachDispatch(books.Add(COleVariant(lpszFile)));  //得到Worksheets 
    sheets.AttachDispatch(book.GetWorksheets(),true);  //怎样获取所有表单的名称?如下:
    long lCount = wssMysheets.GetCount();
    for(long n=1; n<=lCount; n++)
    {
    sheet.AttachDispatch(sheets.GetItem(COleVariant((long)n))); CString strSheetName = (sheet.GetName());//得到了,类推可得到所有的
    break;
    } //
    //总是得到字符串形的值,可以读取公式计算出来的单元格值。
    //
    //  如果是货币字段,得到的是:19,200.00 ;
    //  日期字段,为:2004-8-3等,需要转换一下,但这很容易了!
    //
    range = sheet.GetRange(COleVariant(lpszCell), COleVariant(lpszCell) );

    strValue =  range.GetText().bstrVal;//没错,总是VT_BSTR //... no more in this case //别忘了
    app.Quit(); range.ReleaseDispatch(); 
    sheet.ReleaseDispatch(); 
    sheets.ReleaseDispatch(); 
    book.ReleaseDispatch(); 
    books.ReleaseDispatch(); 
    app.ReleaseDispatch();  return TRUE;//I've got !!! 哈哈!
    }来者请签到,明日散分!