ado excel到access
来源:互联网 发布:mac多桌面有什么用 编辑:程序博客网 时间:2024/05/16 07:42
做了好久,出了很多错误,不过最终还是做好了^_^
原理是从EXCEL表中读一条记录出来,然后插入到ACCESS中。
int CManage::RecordFromExcelToAccess(CString excelPathName) //将ExcelFileName中的数据导入到Access数据库中
{
_ConnectionPtr excelConPtr,accessConPtr;
accessConPtr.CreateInstance(__uuidof(Connection));//初始化
excelConPtr.CreateInstance(__uuidof(Connection));//初始化
CString excelConString=L"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+excelPathName+L";Extended Properties=Excel 8.0;";
CString accessConString=L"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Information.mdb";
//打开数据库和Excel表格文件
try
{
accessConPtr->Open(accessConString.AllocSysString(),"","",adModeUnknown);
excelConPtr->Open(excelConString.AllocSysString(),"","",adModeUnknown);
}
catch (_com_error* e)
{
MessageBox(e->Description());
return 0;
}
CString excelSqlString=L"select * from [sheet$]";
_RecordsetPtr pExcelRecordset;
pExcelRecordset.CreateInstance(__uuidof(Recordset));
//打开记录集
try
{
pExcelRecordset->Open(excelSqlString.AllocSysString(),
excelConPtr.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error e)
{
excelConPtr->Close();
MessageBox(e.Description());
return 0;
}
//开始读取数据
int count=0;
_variant_t var;
_RecordsetPtr p;
_variant_t v;
CString csSql;
CString csClass,csNumber,csName,csUnit,csTradePrice,csRetailPrice;
while(!pExcelRecordset->adoEOF)
{
try
{
var=pExcelRecordset->GetCollect(_variant_t("车型"));
csClass=_com_util::ConvertBSTRToString(_bstr_t(var));
var=pExcelRecordset->GetCollect(_variant_t("配件编码"));
csNumber=_com_util::ConvertBSTRToString(_bstr_t(var));
var = pExcelRecordset->GetCollect(_variant_t("配件名称"));
csName=_com_util::ConvertBSTRToString(_bstr_t(var));
var=pExcelRecordset->GetCollect(_variant_t("单位"));
csUnit=_com_util::ConvertBSTRToString(_bstr_t(var));
var=pExcelRecordset->GetCollect(_variant_t("单价"));
csTradePrice=_com_util::ConvertBSTRToString(_bstr_t(var));
var=pExcelRecordset->GetCollect(_variant_t("建议零售价"));
csRetailPrice=_com_util::ConvertBSTRToString(_bstr_t(var));
}
catch (_com_error e)
{
if(pExcelRecordset->State==1)
pExcelRecordset->Close();
if(excelConPtr->State==1)
excelConPtr->Close();
if(accessConPtr->State==1)
accessConPtr->Close();
MessageBox(e.Description());
return count;
}
csSql=L"select * from data where class='"+csClass+L"' and number='"+csNumber+L"'";
try
{
p=accessConPtr->Execute(csSql.AllocSysString(),&v,adCmdText);
if(p->adoEOF)
{
csSql=L"insert into data values('"+csClass+L"','"+csNumber+L"','"+csName+L"','"+csUnit+L"','"+csTradePrice+L"','"+csRetailPrice+L"','0')";
accessConPtr->Execute(csSql.AllocSysString(),&v,adCmdText);
count++;
}
}
catch(_com_error e)
{
if(pExcelRecordset->State==1)
pExcelRecordset->Close();
if(excelConPtr->State==1)
excelConPtr->Close();
if(accessConPtr->State==1)
accessConPtr->Close();
MessageBox(e.Description());
return count;
}
pExcelRecordset->MoveNext();
}
if(pExcelRecordset->State==1)
pExcelRecordset->Close();
if(excelConPtr->State==1)
excelConPtr->Close();
if(accessConPtr->State==1)
accessConPtr->Close();
return count;
}
- ado excel到access
- ASP 通过ADO导出excel到access的代码
- Access导出到Excel
- Excel导出到Access
- excel导入到access
- ADO.NET 连接access 和 excel
- 从Excel导入到Access
- Excel数据导入到Access
- 将Excel导入到Access
- VBA陈旧的代码:Access 2 Excel (VBA+ADO)
- 编程实现excel到access的导入
- 通过access.oledb连接到excel中
- VB里面实现导出ACCESS到EXCEL
- 实现Excel数据批量导入到Access
- {ASP}从Excel导入到Access中
- winform导入excel到access数据库中
- ACCESS里面的表导出到EXCEL
- 一个Excel导入到Access的实例
- VB使用ActiveX控件实例和步聚
- linux常用的简单命令(一) ls、pwd、cd、cat/more、grep
- C++ Primer笔记(14) 重载操作符与转换
- 好用的产品原型设计软件 Balsamiq Mockups
- DA9034驱动程序阅读笔记(2)
- ado excel到access
- MDI中不显示菜单
- 啊
- oracle的按月统计sql(一个数据库面试题)
- 20091027_.NET_about NotifyIcon
- ASP.NET 页面指令 之 @OutputCache
- zend studio 6配置
- jsp编码 补充 关于JSP页面中的pageEncoding和contentType两种属性的区别
- 计算出字符串中的单词数