您的位置:首页 > 编程语言 > C语言/C++

vc++连接Excel的基本用法,与操作

2010-12-24 22:19 489 查看
     今天帮朋友弄了一个小的程序,能够把Excel中数据进行整理,并且显示出来,c++可以直接连接Excel。连接语句为:

CString strID;
CString sItem1;
CString sItem2;
CDatabase database;
CString sSql;
CString sDriver;
CString sDsn;

// 检索是否安装有Excel驱动 "Microsoft Excel Driver (*.xls)"
sDriver = GetExcelDriver();
if (sDriver.IsEmpty())
{
// 没有发现Excel驱动
AfxMessageBox("没有安装Excel驱动!");
return ;
}

// 创建进行存取的字符串
sDsn.Format("ODBC;DRIVER={%s};DSN='';DBQ=%s", sDriver, m_filepath);

TRY
{
// 打开数据库(既Excel文件)
database.Open(NULL, false, false, sDsn);

CRecordset recset(&database);
//CRecordset rs(&database);
// 设置读取的查询语句.
sSql = "SELECT 样本代码,股票代码 FROM [sheet1$]";

// 执行查询语句
recset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly);
m_list.DeleteAllItems();
while(!recset.IsEOF()){

recset.GetFieldValue("样本代码",sItem1);
recset.GetFieldValue("股票代码",sItem2);

m_list.InsertItem(i,"");
strID.Format("%d",i);
m_list.SetItemText(i,0,strID);
m_list.SetItemText(i,1,sItem1);
m_list.SetItemText(i,2,sItem2);


在Excel表格里取出数字,在MFC list Control控件中显示出来,在这里用到了一个GetExcelDriver函数:

CString CgupiaoDlg::GetExcelDriver()
{
char szBuf[2001];
WORD cbBufMax = 2000;
WORD cbBufOut;
char *pszBuf = szBuf;
CString sDriver;

// 获取已安装驱动的名称(涵数在odbcinst.h里)
if (!SQLGetInstalledDrivers(szBuf, cbBufMax, &cbBufOut))
//AfxMessageBox("没有安装驱动!");
return "";

// 检索已安装的驱动是否有Excel...
do
{
if (strstr(pszBuf, "Excel") != 0)
{
//发现 !
sDriver = CString(pszBuf);
break;
}
pszBuf = strchr(pszBuf, '/0') + 1;
}
while (pszBuf[1] != '/0');

return sDriver;
}


这些就是基本的操作,在做完这些之后,我后来才发现一些高手已经把操作连接Excel封装成类了,如果要下载,请到下面的地址进行下载

http://www.codeproject.com/KB/database/cspreadsheet.aspx,这个是用ODBC进行连接的,

还有个用ADO 连接的,速度更快http://www.codeproject.com/KB/office/BasicExcel.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息