Excel 简单操作其实就是读和写,包括新增,删除,修改
其实和对数据库进行操作是一样的,微软提供了方法!
1.首先获得计算机内已经安装的驱动名称
SQLGetInstalledDrivers(szBuf, cbBufMax, &cbBufOut);
参数1 是字符串,它将获得所有驱动名称,中间以NULL分隔,第二个参数是最大缓冲区大小,第三个是读入的数量
2.检查驱动名称内是否有 Excel 驱动
使用字符串匹配函数 strstr(szBuf,"Excel");
必须安装Excel后才可以进行Excel操作
3.获得Excel驱动名称
4.创建数据库对象
1.CDatabase database;
2.配置数据库的参数: sSql.Format("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=/"% s/";DBQ=% s",sDriver, sExcelFile, sExcelFile);
//参数1:第三步获得的驱动名称,参数2:本地Excel文件名称,参数3:Excel文件数据名 应该和参数2相同
3.打开(文件): BOOL database.OpenEx(sSql,CDatabase::noOdbcDialog) //不需要对话框
5.可以进行操作了
sSql =SQL语句
database.ExecuteSQL(sSql);
6.关闭文件 database.Close();
//以上应该在MFC中使用
#include <odbcinst.h>
#include <afxdb.h>
//读取操作
CString conn;
conn.Format("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=/"%s/";DBQ=%s",
p, pathName, pathName);
c_list.DeleteAllItems();
int i=0;
try
{
CDatabase database;
database.OpenEx(conn,CDatabase::noOdbcDialog);
CRecordset record(&database);
record.Open(CRecordset::forwardOnly,sql,CRecordset::readOnly);
while(!record.IsEOF())
{
record.GetFieldValue("NUM",colum1);
record.GetFieldValue("DATE",colum2);
record.GetFieldValue("TIME",colum3);
c_list.InsertItem(i,"");
c_list.SetItemText(i,1,colum1);
c_list.SetItemText(i,2,colum2);
c_list.SetItemText(i,3,colum3);
record.MoveNext();
i++;
}
record.Close();
}
catch (CDBException* e)
{
MessageBox("数据库操作发生异常!"+e->m_strError);
}
其实和对数据库进行操作是一样的,微软提供了方法!
1.首先获得计算机内已经安装的驱动名称
SQLGetInstalledDrivers(szBuf, cbBufMax, &cbBufOut);
参数1 是字符串,它将获得所有驱动名称,中间以NULL分隔,第二个参数是最大缓冲区大小,第三个是读入的数量
2.检查驱动名称内是否有 Excel 驱动
使用字符串匹配函数 strstr(szBuf,"Excel");
必须安装Excel后才可以进行Excel操作
3.获得Excel驱动名称
4.创建数据库对象
1.CDatabase database;
2.配置数据库的参数: sSql.Format("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=/"% s/";DBQ=% s",sDriver, sExcelFile, sExcelFile);
//参数1:第三步获得的驱动名称,参数2:本地Excel文件名称,参数3:Excel文件数据名 应该和参数2相同
3.打开(文件): BOOL database.OpenEx(sSql,CDatabase::noOdbcDialog) //不需要对话框
5.可以进行操作了
sSql =SQL语句
database.ExecuteSQL(sSql);
6.关闭文件 database.Close();
//以上应该在MFC中使用
#include <odbcinst.h>
#include <afxdb.h>
//读取操作
CString conn;
conn.Format("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=/"%s/";DBQ=%s",
p, pathName, pathName);
CString sql="select * from [number]";
CString colum1,colum2,colum3;c_list.DeleteAllItems();
int i=0;
try
{
CDatabase database;
database.OpenEx(conn,CDatabase::noOdbcDialog);
CRecordset record(&database);
record.Open(CRecordset::forwardOnly,sql,CRecordset::readOnly);
while(!record.IsEOF())
{
record.GetFieldValue("NUM",colum1);
record.GetFieldValue("DATE",colum2);
record.GetFieldValue("TIME",colum3);
c_list.InsertItem(i,"");
c_list.SetItemText(i,1,colum1);
c_list.SetItemText(i,2,colum2);
c_list.SetItemText(i,3,colum3);
record.MoveNext();
i++;
}
record.Close();
}
catch (CDBException* e)
{
MessageBox("数据库操作发生异常!"+e->m_strError);
}