关于ODBC读与EXCEL表格,有几个要点,如果不知道,会费些周折,引起困扰。ODBC写EXCEL,比较容易。关键是读任意表格。需要注意文件名,表格名,表格ID(编程标签),命名区域等几个概念的关系,这里特别总结标注一下:
1、文件名是NNN.XLS, NNN.XLSX
2、表格名是Sheet1,Sheet2等打开EXCEL文件后看到的。
3、表格ID(编程标签)是直接看不能的[Sheet1$],[Sheet2$];
4、命名区域是在名称管理器中定义的,也就是选定一部分单元格,给一个统一命名,名字任意。
ODBC读EXCEL表格的SQL语句中 sSql = "SELECT * FROM XXX"; 这里的XXX指的是上面的3和4。也就是表格ID(编程标签),命名区域。
附一些有参考意义的别人的贴子
1、vc使用ODBC读excel找不到表的解决办法
Excel工作簿要通过ODBC进行数据库操作,确实需要一点与其他数据库(例如:ACCESS,FORPRO)不同的设置.
因为表名不等于SHEET1,也不等于SHEET2,SHEET3。
要访问表 , 必须先定义一个表。
方法如下:
运行Microsoft Excel , 打开要操作的工作簿, 左键拖拽,选取要定义成为表的区域, 从菜单中选择'插入 '->'名称'->'定义'
'定义名称'对话框出现后,键入表的名字,
例如:STUDENTS,存盘退出。
这样,你就可以在VC中,使用象SELECT * FROM STUDENTS 这样的SQL语句了。试试看
如果不行,重复上面操作,看看定义表加进入没有
https://blog.csdn.net/jijiliu420/article/details/18037643
2、
// 设置读取的查询语句.
//特别注意此处的[Sheet1$]格式,其中Sheet1是demo.xls文件中的一个数据表,普通excel文件中往往不具备表结构,而通过odbc创建的excel文件具备表结构,这就是网上大多数无法用odbc打开普通excel文件的原因所在(将相应的数据表设置会具备表功能的结构也可以通过直接使用Sheet1打开,具体方法百度即可),直接使用[Sheet1$]这种格式即忽略了文件中是否具有表结构,直接将指定的表名所对应的表当作数据表进行读取操作。
sSql = "SELECT * FROM [Sheet1$]";
————————————————
版权声明:本文为CSDN博主「小伟锅」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u011028345/article/details/77417856
https://blog.csdn.net/u011028345/article/details/77417856
https://blog.csdn.net/u011028345/article/details/77417856?fps=1&locationNum=3
https://blog.csdn.net/topping/article/details/6955888
https://blog.csdn.net/iamlaosong/article/details/53992113
https://blog.csdn.net/weixin_33774883/article/details/93484428
https://blog.csdn.net/qq_32285693/article/details/80940035
https://blog.csdn.net/lileiyuyanqin/article/details/79241629
知道了这些,ODBC就可以读取任意表格了。
另外,在ODBC读写EXCEL的贴子中,基本没有谈数据类型,也没有谈数据精度的。展示的只是TEXT,NUMBER二种。实际上可以有更多种:
下表显示了如何将 Microsoft Excel 驱动程序数据类型映射到 ODBC SQL 数据类型。 Microsoft Excel 驱动程序基于列中的数据,将这些数据类型分配给 Microsoft Excel 表中的列。
Microsoft Excel 数据类型 | ODBC 数据类型 |
---|---|
货币 | SQL_NUMERIC |
DATETIME | SQL_TIMESTAMP |
LOGICAL | SQL_BIT |
NUMBER | SQL_DOUBLE |
TEXT | SQL_VARCHAR |