如何用VC读取Excel表格中的数据详细介绍

首先,我们要明白的是,VC是通过ODBC来访问Excel表格的,也就是说,VC将Excel表格,当作数据库来处理。当然了,也可以通过读以tab键隔开的文件来处理这样的文件,但是,我还是更加愿意用读取数据库的方式来访问Excel表格。
第二,既然是数据库,那么,就需要建立一个与该库对应的dsn,这个,而且,在建立dsn之前,首先要确定,已经安装了Excel的驱动。
第三,要访问数据库中的表格,就要先打开该表格,如此,就需要一个与之对应的RecordSet。如此,有如下代码:
void CRWExcel::ReadFromExcel()
{
      CDatabase database;
      CString sSql;
      CString sItem1, sItem2;
      CString sDriver;
      CString sDsn;
      CString sFile = "Demo.xls";// 将被读取的Excel文件名
                                     
    // 检索是否安装有Excel驱动 "Microsoft Excel Driver (*.xls)"
      sDriver = GetExcelDriver();
      if (sDriver.IsEmpty())
      {
          // 没有发现Excel驱动
          AfxMessageBox("没有安装Excel驱动!");
          return;
      }
      // 创建进行存取的字符串
      sDsn.Format("ODBC;DRIVER={%s};DSN='''';DBQ=%s", sDriver, sFile);

      TRY
      {
// 打开数据库,建立与这个Excel对应的Database
          database.Open(NULL, false, false, sDsn);
          CRecordset recset(&database);
// 设置读取的查询语句.demo.xls并非文件名,需要在excel中进行//设置,具体文章最后有讲
          sSql = "SELECT Age, Name FROM DEMO.XLS";
      // 执行查询语句,打开表格
          recset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly);
          // 获取查询结果
          while (!recset.IsEOF())
          {
              //读取Excel内部数值
              recset.GetFieldValue("Name ", sItem1);
              recset.GetFieldValue("Age", sItem2);
              // 移到下一行
              recset.MoveNext();
          }
          // 关闭数据库
          database.Close();
      }
      CATCH(CDBException, e)
      {
          // 数据库操作产生异常时...
          AfxMessageBox("数据库错误: " + e->m_strError);
      }
      END_CATCH;
}
需要注意的是,我们对我们的Excel表格需要进行一些处理,需要先选定我们要读取的数据,之后,选择插入>>名字>>之后,在输入框中输入我们在select语句中用到的表名。第二,需要设置列名,为我们选定部分的最前面的一行的数据。

posted on 2010-10-11 11:15 wrh 阅读(8377) 评论(1)  编辑 收藏 引用

评论

# re: 如何用VC读取Excel表格中的数据详细介绍 2012-03-02 16:57 朱文涛

那个函数GetExcelDriver();怎么会提示没定义?如果在C++控制台应用程序里怎么读取?谢谢~  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

<2010年10月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

统计

常用链接

留言簿(19)

随笔档案

文章档案

收藏夹

搜索

最新评论

阅读排行榜

评论排行榜