MFC读写excel

#include <afxdb.h>//oDBC读取excel的

#include <shlwapi.h>//判断文件是否存在

#pragma comment(lib,"Shlwapi.lib") //如果没有这行,会出现link错误判断文件是否存在


函数如下

bool CExcelnewDlg::jude(CString path_)
{


  if (PathFileExists(path_))
    {
      //判断文件是否存在
 //MessageBox("存在");
    return 1;
    }


    else  //CreateDirectory(html_path_out1, NULL);  //文件夹不存在
    return 0;


}


void CExcelnewDlg::writeexcel()
{
 //创建Excel文件
    CDatabase DB;


    //Excel安装驱动
    CString StrDriver = "MICROSOFT EXCEL DRIVER (*.XLS)";


    //要建立的Execel文件
    CString StrExcelFile = "..\\Teachers.xls";
    CString StrSQL;
    StrSQL.Format("DRIVER={%s};DSN='';FIRSTROWHASNameS=1;READONLY=FALSE;CREATE_DB=%s;DBQ=%s",StrDriver,StrExcelFile,StrExcelFile);
    TRY
    {
        //创建Excel表格文件
        DB.OpenEx(StrSQL, CDatabase::noOdbcDialog);


        //创建表结构,字段名不能是Index
        StrSQL = "CREATE TABLE Teachers(职工号 TEXT, 姓名 TEXT)";
if (!jude("..\\Teachers.xls"))
        DB.ExecuteSQL(StrSQL);//表已经存在的话就不用这个了


        //插入数值
CString a_,b_;
a_="asd";
b_="fgh";
        StrSQL.Format("INSERT INTO Teachers (职工号, 姓名) VALUES ('%s', '%s')", "aa", "bb");
        DB.ExecuteSQL(StrSQL);
StrSQL.Format("INSERT INTO Teachers (职工号, 姓名) VALUES ('%s', '%s')", a_, b_);
        DB.ExecuteSQL(StrSQL);


        //关闭数据库
        DB.Close();
    }
    CATCH(CDBException,  e)
    {
        AfxMessageBox("创建错误:" + e->m_strError);
    }
    END_CATCH;
    MessageBox("创建成功!");






}
void CExcelnewDlg::readexcel()
{


CDatabase DB;
    CString StrSQL;
    CString StrDsn;


    //创建ODBC数据源连接字符串
    StrDsn.Format("ODBC;DRIVER={MICROSOFT EXCEL DRIVER (*.XLS)};DSN='';DBQ=..\\teachers.xls");
    TRY
    {
        //打开Excel文件
        DB.Open(NULL, false, false, StrDsn);  
        CRecordset DBSet(&DB);


        //设置读取的查询语句
        StrSQL = "SELECT * FROM Teachers";   


        //执行查询语句
        DBSet.Open(CRecordset::forwardOnly, StrSQL, CRecordset::readOnly);


        //获取查询结果
        CString StrInfo = "职工号, 姓名\n";
        while(!DBSet.IsEOF())
        {
            //读取Excel内部数值
            for(int i=0; i<DBSet.GetODBCFieldCount(); i++)
            {
                CString Str;
                DBSet.GetFieldValue(i, Str);
                StrInfo += Str + " ";
            }
            StrInfo += "\n";
            DBSet.MoveNext();
        }
        MessageBox(StrInfo);  //在信息框中显示
        DB.Close();
    }
    CATCH(CDBException, e) 
    {
        AfxMessageBox("数据库错误:" + e->m_strError);
    }
    END_CATCH;
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值