如:EXCEL表A里,有两条记录:“A”,“B”,要在另一个EXCEL表B里(“A,21”,“F,55”,“B,22”,“C,23”,“D,24”的记录里查出,然后在B里查出“A,21”和“B,22”后,累加21+22=43,显示出43,
请问如何解决
14 个解决方案
#1
竟然没有人回复我的。
#2
没研究过帮顶下吧
#3
建立两张表A,B(注必须是二维表)
简单的方法使用ODBC连接,
建立DSN,开始->控制面板->管理工具->数据源(odbc)->系统dsn->添加->选择Microsoft excel driver
->设置"数据源名",选择"工作薄",点"选项",取消"只读"
//连接示例(使用API,如果使用MFC,请自己转换一下)
HENV henv=NULL;
HDBC hdbc=NULL;
SQLRETURN ret;
SQLAllocHandle(SQL_HANDLE_ENV,NULL,&henv);
if(henv==NULL)
return FALSE;
SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER);
SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);
ret=SQLConnect(hdbc,(SQLCHAR*)"数据源名",lstrlen("数据源名"),(SQLCHAR*)"",lstrlen(""),
(SQLCHAR*)"",lstrlen(""));
HSTMT hstmt;
SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&hstmt);
SQLPrepare(hstmt,(SQLCHAR*)"SELECT语名",SQL_NTS);
ret=SQLExecute(hstmt);
if(ret!=SQL_SUCCESS && ret!=SQL_SUCCESS_WITH_INFO)
{
//失败
}
SQLBindCol(...);
SQLFetch(hstmt);
SQLFreeHandle();
大概步骤就是这样,具体函数请参考MSDN
简单的方法使用ODBC连接,
建立DSN,开始->控制面板->管理工具->数据源(odbc)->系统dsn->添加->选择Microsoft excel driver
->设置"数据源名",选择"工作薄",点"选项",取消"只读"
//连接示例(使用API,如果使用MFC,请自己转换一下)
HENV henv=NULL;
HDBC hdbc=NULL;
SQLRETURN ret;
SQLAllocHandle(SQL_HANDLE_ENV,NULL,&henv);
if(henv==NULL)
return FALSE;
SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER);
SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);
ret=SQLConnect(hdbc,(SQLCHAR*)"数据源名",lstrlen("数据源名"),(SQLCHAR*)"",lstrlen(""),
(SQLCHAR*)"",lstrlen(""));
HSTMT hstmt;
SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&hstmt);
SQLPrepare(hstmt,(SQLCHAR*)"SELECT语名",SQL_NTS);
ret=SQLExecute(hstmt);
if(ret!=SQL_SUCCESS && ret!=SQL_SUCCESS_WITH_INFO)
{
//失败
}
SQLBindCol(...);
SQLFetch(hstmt);
SQLFreeHandle();
大概步骤就是这样,具体函数请参考MSDN
#4
1、读出两个sheet中的
关键字(匹配字段)及
行位置,记录在两个结构数组里
2、如有必要,可以对两个数组进行一下排序
3、匹配处理,读写处理结果
2、如有必要,可以对两个数组进行一下排序
3、匹配处理,读写处理结果
#5
如果只查询,ODBC会快很多
#6
直接写sql,在vc里执行
SheetA:
-----------------------
字段1 字段2
1. A ×××
2. B ×××
.
.
.
,
SheetB:
-----------------------
字段1 字段2
1. A 21
2. B 22
3. C N
.
.
.
Sql : “select sum(b.字段2) from SheetA a,SheetB b where a.字段1 = b.字段2”
-----------------------
用vc打开excel文件,将excel文件当作数据库打开,写法可以参照Access的操作,只是连接字符串改变一下就可以了。
SheetA:
-----------------------
字段1 字段2
1. A ×××
2. B ×××
.
.
.
,
SheetB:
-----------------------
字段1 字段2
1. A 21
2. B 22
3. C N
.
.
.
Sql : “select sum(b.字段2) from SheetA a,SheetB b where a.字段1 = b.字段2”
-----------------------
用vc打开excel文件,将excel文件当作数据库打开,写法可以参照Access的操作,只是连接字符串改变一下就可以了。
#7
操作Excel文件读取数据,参考:
http://www.vckbase.com/document/viewdoc/?id=421
http://www.vckbase.com/document/viewdoc/?id=421
#8
都是好人,,,谢谢这么多意见.
#9
不过楼上的,能同时打开两个EXCEL表的吗?
#10
是两个EXCEL文件,楼上的只是两个SHEET表.
#11
可以打开的,我最近也在做个项目,正好是ADO连接EXCEL,多个表操作。 打开多个EXCEL也可以
#12
能吗?我意思就是两个EXCEL文件之间的操作,有举例吗?
#13
创建两个dsn,建立两个odbc连接.
#14
确实只能建立两个DSN呢,,,可能我出题目时表达不清楚,不过都多谢各位专业的意见,在此,小生感激不尽。现将分数付上。
#1
竟然没有人回复我的。
#2
没研究过帮顶下吧
#3
建立两张表A,B(注必须是二维表)
简单的方法使用ODBC连接,
建立DSN,开始->控制面板->管理工具->数据源(odbc)->系统dsn->添加->选择Microsoft excel driver
->设置"数据源名",选择"工作薄",点"选项",取消"只读"
//连接示例(使用API,如果使用MFC,请自己转换一下)
HENV henv=NULL;
HDBC hdbc=NULL;
SQLRETURN ret;
SQLAllocHandle(SQL_HANDLE_ENV,NULL,&henv);
if(henv==NULL)
return FALSE;
SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER);
SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);
ret=SQLConnect(hdbc,(SQLCHAR*)"数据源名",lstrlen("数据源名"),(SQLCHAR*)"",lstrlen(""),
(SQLCHAR*)"",lstrlen(""));
HSTMT hstmt;
SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&hstmt);
SQLPrepare(hstmt,(SQLCHAR*)"SELECT语名",SQL_NTS);
ret=SQLExecute(hstmt);
if(ret!=SQL_SUCCESS && ret!=SQL_SUCCESS_WITH_INFO)
{
//失败
}
SQLBindCol(...);
SQLFetch(hstmt);
SQLFreeHandle();
大概步骤就是这样,具体函数请参考MSDN
简单的方法使用ODBC连接,
建立DSN,开始->控制面板->管理工具->数据源(odbc)->系统dsn->添加->选择Microsoft excel driver
->设置"数据源名",选择"工作薄",点"选项",取消"只读"
//连接示例(使用API,如果使用MFC,请自己转换一下)
HENV henv=NULL;
HDBC hdbc=NULL;
SQLRETURN ret;
SQLAllocHandle(SQL_HANDLE_ENV,NULL,&henv);
if(henv==NULL)
return FALSE;
SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER);
SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);
ret=SQLConnect(hdbc,(SQLCHAR*)"数据源名",lstrlen("数据源名"),(SQLCHAR*)"",lstrlen(""),
(SQLCHAR*)"",lstrlen(""));
HSTMT hstmt;
SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&hstmt);
SQLPrepare(hstmt,(SQLCHAR*)"SELECT语名",SQL_NTS);
ret=SQLExecute(hstmt);
if(ret!=SQL_SUCCESS && ret!=SQL_SUCCESS_WITH_INFO)
{
//失败
}
SQLBindCol(...);
SQLFetch(hstmt);
SQLFreeHandle();
大概步骤就是这样,具体函数请参考MSDN
#4
1、读出两个sheet中的
关键字(匹配字段)及
行位置,记录在两个结构数组里
2、如有必要,可以对两个数组进行一下排序
3、匹配处理,读写处理结果
2、如有必要,可以对两个数组进行一下排序
3、匹配处理,读写处理结果
#5
如果只查询,ODBC会快很多
#6
直接写sql,在vc里执行
SheetA:
-----------------------
字段1 字段2
1. A ×××
2. B ×××
.
.
.
,
SheetB:
-----------------------
字段1 字段2
1. A 21
2. B 22
3. C N
.
.
.
Sql : “select sum(b.字段2) from SheetA a,SheetB b where a.字段1 = b.字段2”
-----------------------
用vc打开excel文件,将excel文件当作数据库打开,写法可以参照Access的操作,只是连接字符串改变一下就可以了。
SheetA:
-----------------------
字段1 字段2
1. A ×××
2. B ×××
.
.
.
,
SheetB:
-----------------------
字段1 字段2
1. A 21
2. B 22
3. C N
.
.
.
Sql : “select sum(b.字段2) from SheetA a,SheetB b where a.字段1 = b.字段2”
-----------------------
用vc打开excel文件,将excel文件当作数据库打开,写法可以参照Access的操作,只是连接字符串改变一下就可以了。
#7
操作Excel文件读取数据,参考:
http://www.vckbase.com/document/viewdoc/?id=421
http://www.vckbase.com/document/viewdoc/?id=421
#8
都是好人,,,谢谢这么多意见.
#9
不过楼上的,能同时打开两个EXCEL表的吗?
#10
是两个EXCEL文件,楼上的只是两个SHEET表.
#11
可以打开的,我最近也在做个项目,正好是ADO连接EXCEL,多个表操作。 打开多个EXCEL也可以
#12
能吗?我意思就是两个EXCEL文件之间的操作,有举例吗?
#13
创建两个dsn,建立两个odbc连接.
#14
确实只能建立两个DSN呢,,,可能我出题目时表达不清楚,不过都多谢各位专业的意见,在此,小生感激不尽。现将分数付上。