ODBC导出Excel遇到的表名错误问题解决(excel 2007)
之前在为公司里做数据导出的时候,遇到一个很监介的错误。我一开始以为Excel下面的Sheet1,Sheet2就是相应的表明,所以只是用Selcet * from Sheet1之类的语句。但是在C++的异常中却抛出了一个表名不存在的错误。
后来查了一下,貌似是因为用ODBC的方法必须得每次都重新定义表,而表名不是Sheet1.
转载:vc使用ODBC读excel找不到表的解决办法
Excel工作簿要通过ODBC进行数据库操作,确实需要一点与其他数据库(例如:ACCESS,FORPRO)不同的设置.
因为表名不等于SHEET1,也不等于SHEET2,SHEET3。
要访问表 , 必须先定义一个表。
方法如下:
运行Microsoft Excel 2003, 打开要操作的工作簿, 左键拖拽,选取要定义成为表的区域, 从菜单中选择'插入 '->'名称'->'定义'
'定义名称'对话框出现后,键入表的名字,
例如:STUDENTS,存盘退出。
这样,你就可以在VC中,使用象SELECT * FROM STUDENTS 这样的SQL语句了。试试看
如果不行,重复上面操作,看看定义表加进入没有
但是现在2003已经不常用了,研究了一下2007,把新的位置告诉大家。
运行Microsoft Excel 2007, 打开要操作的工作簿, 左键拖拽,选取要定义成为表的区域, 从菜单中选择'Formulas '->'Define Names
'定义名称'对话框出现后,键入表的名字,主要scope一定要选为整个workbook,并且注意一下refer to 看看有没有问题。
另外,需要指出的是,从试验结果证明下来,如果excel的一个非头几行(试验下来是前3)的工作格中没有出现超长的数据(一般是多于两个整页面宽度),而在后面的工作咯中却有。那么GetFieldValue有可能会抛出SQL_NO_TOTAL的异常。而这个异常极难处理。我的解决办法是,故意在第一行的长单元格中补充数据,使其变得非常长,这样以后只要修改这一个就ok了。
------------------------------------------------------------------------
email : aicrosoft1104@126.com
吃遍天下。