EXCEL OLEDB 查询
select查询语句时sql语句中最常用的,其中日期有特殊的格式要求,就是日期前后都要连接一个#。可以筛选等于、介于、不等于、大于、小于某个日期的数据,也可以只筛选指定字段的数据,在select后边,如果是*号,就是筛选全部数据,如果指定字段,则各个字段名称间用空格隔开。举例如下:
1、Select * from 表名称 where 出库日期 between #2016-01-01# and #2015-05-05#
上面这句的意思是筛选指定表中的出库日期介于2016-01-01至2016-05-05之间的全部数据
2、Select 产品名称 型号 from 表名称 Where 出库日期 =#2016-01-04#
这句的意思是筛选指定表中的出库日期等于2016-01-04的产品名称和型号的数据
版权声明:本文为博主原创文章,未经博主允许不得转载。
第一步:#import "C:\\Program Files\\Common Files\\System\\ADO\\msado15.dll" no_namespace rename("EOF","adoEOF")
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
::CoInitialize(NULL); //初始化COM,MFC中可在CxxxApp中的InitInstance中用AfxOleInit()完成
try{
//创建Connection 对象
m_pConnection.CreateInstance("ADODB.Connection");
//设置连接字符串,必须是BSTR型或者_bstr_t类型
_bstr_t strConnect="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Documents and Settings\\cf\\桌面\\000.xls;Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"";
//_bstr_t strConnect="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Documents and Settings\\cf\\桌面\\000.xlsx;Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"";//用于连接excel 2007,首先需要查看计算机是否安装有AccessDatabaseEngine.exe,没有的话需要先下载安装
OLEDB同样可以通过ODBC来操作数据库,利用DRIVER={drivername};DSN='';DBQ=filepath
//A: HDR ( HeaDer Row )设置
//若指定值为Yes,代表 Excel 档中的工作表第一行是栏位名称
//若指定值為 No,代表 Excel 档中的工作表第一行就是資料了,沒有栏位名称
//B:IMEX ( IMport EXport mode )设置
//IMEX 有三种模式,各自引起的读写行为也不同,容後再述:
//0 is Export mode
//1 is Import mode
//2 is Linked mode (full update capabilities)
//我这里特别要说明的就是 IMEX 参数了,因为不同的模式代表著不同的读写行为:
//当IMEX=0 时为“汇出模式”,这个模式开启的 Excel 档案只能用来做“写入”用途。
//当 IMEX=1 时为“汇入模式”,这个模式开启的 Excel 档案只能用来做“读取”用途。
//当 IMEX=2 时为“连結模式”,这个模式开启的 Excel 档案可同时支援“读取”与“写入”用途
m_pConnection->Open(strConnect,"","",adModeUnknown);
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open("select * from [Sheet1$]",_variant_t((IDispatch *)m_pConnection,true),adOpenDynamic,adLockOptimistic,adCmdUnknown);
//m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);//与上面等价
_variant_t var;
_bstr_t strName;
while(!m_pRecordset->adoEOF){
var=m_pRecordset->GetCollect("ENG");
if(var.vt!=VT_NULL)
strName=(LPCSTR)_bstr_t(var);
AfxMessageBox(strName);
m_pRecordset->MoveNext();
}
}catch(_com_error e) //捕捉异常
{
AfxMessageBox("error!");
}
if(m_pRecordset!=NULL)
m_pRecordset->Close();
m_pConnection->Close();
::CoUninitialize();
使用Microsoft.Jet.OLEDB读取Excel文件时需要在sql中指定表名,形如[Sheet1$],也就是xls文件中的工作表。对于导入Excel文件这类操作,因为用户提供的xls文件中工作簿的名字不一定是默认的“Sheet1”,检测Excel文件的工作表的名称往往需要调用Excel的com对象来获得,比较麻烦。
另外有个办法可以获得工作表名称,以下是c#代码:
public static string GetFirstTableName()
{
DataTable dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
string tableName = dt.Rows[0][2].ToString().Trim();
return tableName;
}
但是上面的方法获取的表名,其实是经过排序的,不一定就是位置在第一个的工作表的名称,所以并不一定适用。
其实可以用下面的办法绕过这个必须显式指定工作表的问题,在OleDb调用的获取数据的SQL这样指定表名:
SELECT * FROM [$A1:R65536]
此处[$A1:R65536] 替换通常的[Sheet1$],其含义就是获取xls文件中在第一个位置的工作表中A列到R列的1-65536行这块数据。这样就可以避免获取第一个工作表的问题,根据要导入的xls文件内容可以修改 开始列字母1:结束列字母65536 中的字母为实际需要的值
EXCEL OLEDB 查询相关推荐
- excel查询oracle数据库,用Excel直接查询Oracle中的数据
一般情况下,我们如果想要把Oracle当中查询的数据保存为Excel文件,一般都是使用的是PL/SQLDeveloper,本文就给大家介绍一下关于用Excel直接查询Oracle中的数据的内容. 事实 ...
- oracle匹配excel数据,如何用Excel直接查询Oracle中的数据
如何用Excel直接查询Oracle中的数据 关注:275 答案:2 mip版 解决时间 2021-01-11 08:35 提问者╬═掵中注定 2021-01-10 16:43 如何用Excel直 ...
- WPS excel 实现查询返回所有符合的结果,将结果拼成一个字符串
WPS excel 实现查询返回所有符合条件的数据,将结果拼成一个字符串返回显示 实现效果如下: 案例文件地址https://download.csdn.net/download/shandongmi ...
- C#通过OleDb查询Oracle存储过程
using System; using System.Data; using System.Data.OleDb; /// <summary>/// 通过OleDb查询Oracle存储过程 ...
- 0基础用android做一个excel表查询器(2):编写程序
0基础用android做一个Excel表查询器(2):编写程序 编完页面下面就该开始写程序了,首先确定一下思路,很简单,将Excel表写入一个List(或数组)里,然后获取Plain Text中写入的 ...
- excel oledb mysql_OLEDB操作Excel
使用OLEDB操作Excel 的方法 OleDbConnection conn = null; try { //fileName 表示要操纵的Excel的文件路径,如果excel不存在,现创建它,可以 ...
- excel oledb mysql_excel连接数据库oledb
该 ISAM 不支持在链接表中删除数据. 使用OleDB方式操作Excel,删除表中的数据时提示该错误 相关代码: 连接字符串: //定义OleDB连接字符串 string strConn = &qu ...
- 使用EXCEL的查询
一.直接用ADO连接Excel 直接用ADOQuery连接,其ConnectionString设为 Provider=microsoft.jet.oledb.4.0;data source=C://2 ...
- 如何用Excel直接查询Oracle中的数据(转)
将Oracle中查询的数据保存为Excel文件,通常使用的是PL/SQL Developer. 其实,Excel可直接写SQL语句查询Oracle中数据,在这里,用到ODBC驱动.详细步骤如下: 一. ...
最新文章
- 【ACM】UVa 1339
- DELPHI FMX 获取系统版本 ANDROID IOS通用
- Snort规则检测引擎--架构解析
- Pomelo:网易开源基于 Node.js 的游戏服务端框架
- Geoserver的ImageMosaic数据源添加以及服务发布
- 基于物理的渲染详尽指南 卷1光与介质:基于物理的渲染和着色理论
- python学习之路——day1(18/9/11)
- 【原创】实战padding oracle漏洞
- GPS经纬度转百度经纬度JAVA
- 购买vSphere虚拟化主机的配置建议清单
- 子域名劫持漏洞详解、挖掘和防护
- 管螺纹如何标注_你所不知道的机械螺纹全面常识(分享篇),赶紧收藏下吧
- 自建Ceph存储与 AWS、阿里云、腾讯云的成本对比
- 命令行工具 DOT和DOH测试
- gurobi中的lp
- 一个疯子的梦-20190921
- 个人第一篇博客——自我介绍
- export default (imported as router) was not found_as也可以用于倒装句,你所不知道的as用法...
- 【全文】工信部正式发布《公共互联网网络安全突发事件应急预案》
- 优思学院|六西格玛黑带应如何选择和评估项目?